Commit 367648d2 authored by Steve Holme's avatar Steve Holme
Browse files

pop3: Moved the sending of the AUTH command into a separate function

parent bd3a59ad
Loading
Loading
Loading
Loading
+34 −13
Original line number Diff line number Diff line
@@ -572,6 +572,39 @@ static CURLcode pop3_perform_apop(struct connectdata *conn)
}
#endif

/***********************************************************************
 *
 * pop3_perform_auth()
 *
 * Sends an AUTH command allowing the client to login with the given SASL
 * authentication mechanism.
 */
static CURLcode pop3_perform_auth(struct connectdata *conn,
                                  const char *mech,
                                  const char *initresp, size_t len,
                                  pop3state state1, pop3state state2)
{
  CURLcode result = CURLE_OK;
  struct pop3_conn *pop3c = &conn->proto.pop3c;

  if(initresp && 8 + strlen(mech) + len <= 255) { /* AUTH <mech> ...<crlf> */
    /* Send the AUTH command with the initial response */
    result = Curl_pp_sendf(&pop3c->pp, "AUTH %s %s", mech, initresp);

    if(!result)
      state(conn, state2);
  }
  else {
    /* Send the AUTH command */
    result = Curl_pp_sendf(&pop3c->pp, "AUTH %s", mech);

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

  return result;
}

/***********************************************************************
 *
 * pop3_perform_authentication()
@@ -673,19 +706,7 @@ static CURLcode pop3_perform_authentication(struct connectdata *conn)
  if(!result) {
    if(mech && (pop3c->preftype & POP3_TYPE_SASL)) {
      /* Perform SASL based authentication */
      if(initresp &&
         8 + strlen(mech) + len <= 255) { /* AUTH <mech> ...<crlf> */
        result = Curl_pp_sendf(&pop3c->pp, "AUTH %s %s", mech, initresp);

        if(!result)
          state(conn, state2);
      }
      else {
        result = Curl_pp_sendf(&pop3c->pp, "AUTH %s", mech);

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

      Curl_safefree(initresp);
    }