Commit bd3a59ad authored by Steve Holme's avatar Steve Holme
Browse files

imap: Moved the sending of the AUTHENICATE command into a separate function

parent c0245cc5
Loading
Loading
Loading
Loading
+33 −12
Original line number Diff line number Diff line
@@ -555,6 +555,38 @@ static CURLcode imap_perform_login(struct connectdata *conn)
  return result;
}

/***********************************************************************
 *
 * imap_perform_authenticate()
 *
 * Sends an AUTHENTICATE command allowing the client to login with the given
 * SASL authentication mechanism.
 */
static CURLcode imap_perform_authenticate(struct connectdata *conn,
                                          const char *mech,
                                          const char *initresp,
                                          imapstate state1, imapstate state2)
{
  CURLcode result = CURLE_OK;

  if(initresp) {
    /* Send the AUTHENTICATE command with the initial response */
    result = imap_sendf(conn, "AUTHENTICATE %s %s", mech, initresp);

    if(!result)
      state(conn, state2);
  }
  else {
    /* Send the AUTHENTICATE command */
    result = imap_sendf(conn, "AUTHENTICATE %s", mech);

    if(!result)
      state(conn, state1);
  }

  return result;
}

/***********************************************************************
 *
 * imap_perform_authentication()
@@ -653,18 +685,7 @@ static CURLcode imap_perform_authentication(struct connectdata *conn)
  if(!result) {
    if(mech && (imapc->preftype & IMAP_TYPE_SASL)) {
      /* Perform SASL based authentication */
      if(initresp) {
        result = imap_sendf(conn, "AUTHENTICATE %s %s", mech, initresp);

        if(!result)
          state(conn, state2);
      }
      else {
        result = imap_sendf(conn, "AUTHENTICATE %s", mech);

        if(!result)
          state(conn, state1);
      }
      result = imap_perform_authenticate(conn, mech, initresp, state1, state2);

      Curl_safefree(initresp);
    }