diff options
-rw-r--r-- | lib/imap.c | 43 | ||||
-rw-r--r-- | lib/pop3.c | 58 | ||||
-rw-r--r-- | lib/smtp.c | 36 |
3 files changed, 68 insertions, 69 deletions
diff --git a/lib/imap.c b/lib/imap.c index 6bdd5c1ae..b13bd3da7 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -596,33 +596,32 @@ static CURLcode imap_perform_authenticate(struct connectdata *conn) conn->passwd, &initresp, &len); } - if(result) - return result; + if(!result) { + if(mech) { + /* Perform SASL based authentication */ + if(initresp) { + result = imap_sendf(conn, "AUTHENTICATE %s %s", mech, initresp); - if(mech) { - /* 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, state2); + if(!result) + state(conn, state1); + } + + Curl_safefree(initresp); } + else if(!imapc->login_disabled) + /* Perform clear text authentication */ + result = imap_perform_login(conn); else { - result = imap_sendf(conn, "AUTHENTICATE %s", mech); - - if(!result) - state(conn, state1); + /* Other mechanisms not supported */ + infof(conn->data, "No known authentication mechanisms supported!\n"); + result = CURLE_LOGIN_DENIED; } - - Curl_safefree(initresp); - } - else if(!imapc->login_disabled) - /* Perform clear text authentication */ - result = imap_perform_login(conn); - else { - /* Other mechanisms not supported */ - infof(conn->data, "No known authentication mechanisms supported!\n"); - result = CURLE_LOGIN_DENIED; } return result; diff --git a/lib/pop3.c b/lib/pop3.c index bace72a11..6f188b254 100644 --- a/lib/pop3.c +++ b/lib/pop3.c @@ -624,42 +624,40 @@ static CURLcode pop3_perform_authenticate(struct connectdata *conn) } } - if(result) - return result; + 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(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, state2); - } - else { - /* Perform SASL based authentication */ - result = Curl_pp_sendf(&pop3c->pp, "AUTH %s", mech); + if(!result) + state(conn, state1); + } - if(!result) - state(conn, state1); + Curl_safefree(initresp); } - - Curl_safefree(initresp); - } #ifndef CURL_DISABLE_CRYPTO_AUTH - else if((pop3c->authtypes & POP3_TYPE_APOP) && - (pop3c->preftype & POP3_TYPE_APOP)) - /* Perform APOP authentication */ - result = pop3_perform_apop(conn); + else if((pop3c->authtypes & POP3_TYPE_APOP) && + (pop3c->preftype & POP3_TYPE_APOP)) + /* Perform APOP authentication */ + result = pop3_perform_apop(conn); #endif - else if((pop3c->authtypes & POP3_TYPE_CLEARTEXT) && - (pop3c->preftype & POP3_TYPE_CLEARTEXT)) - /* Perform clear text authentication */ - result = pop3_perform_user(conn); - else { - /* Other mechanisms not supported */ - infof(conn->data, "No known authentication mechanisms supported!\n"); - result = CURLE_LOGIN_DENIED; + else if((pop3c->authtypes & POP3_TYPE_CLEARTEXT) && + (pop3c->preftype & POP3_TYPE_CLEARTEXT)) + /* Perform clear text authentication */ + result = pop3_perform_user(conn); + else { + /* Other mechanisms not supported */ + infof(conn->data, "No known authentication mechanisms supported!\n"); + result = CURLE_LOGIN_DENIED; + } } return result; diff --git a/lib/smtp.c b/lib/smtp.c index 72b3bbf6a..72a6135ff 100644 --- a/lib/smtp.c +++ b/lib/smtp.c @@ -518,29 +518,31 @@ static CURLcode smtp_perform_authenticate(struct connectdata *conn) result = Curl_sasl_create_plain_message(conn->data, conn->user, conn->passwd, &initresp, &len); } - else { - /* Other mechanisms not supported */ - infof(conn->data, "No known authentication mechanisms supported!\n"); - result = CURLE_LOGIN_DENIED; - } if(!result) { - /* Perform SASL based authentication */ - if(initresp && - 8 + strlen(mech) + len <= 512) { /* AUTH <mech> ...<crlf> */ - result = Curl_pp_sendf(&smtpc->pp, "AUTH %s %s", mech, initresp); + if(mech) { + /* Perform SASL based authentication */ + if(initresp && + 8 + strlen(mech) + len <= 512) { /* AUTH <mech> ...<crlf> */ + result = Curl_pp_sendf(&smtpc->pp, "AUTH %s %s", mech, initresp); - if(!result) - state(conn, state2); + if(!result) + state(conn, state2); + } + else { + result = Curl_pp_sendf(&smtpc->pp, "AUTH %s", mech); + + if(!result) + state(conn, state1); + } + + Curl_safefree(initresp); } else { - result = Curl_pp_sendf(&smtpc->pp, "AUTH %s", mech); - - if(!result) - state(conn, state1); + /* Other mechanisms not supported */ + infof(conn->data, "No known authentication mechanisms supported!\n"); + result = CURLE_LOGIN_DENIED; } - - Curl_safefree(initresp); } return result; |