From: Steve Holme Date: Sun, 28 Apr 2013 11:57:42 +0000 (+0100) Subject: email: Tidy up of *_perform_authenticate() X-Git-Tag: curl-7_31_0~91 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9ea51459520d5d8a397908b4a3fc6cc3b2d45974;p=thirdparty%2Fcurl.git email: Tidy up of *_perform_authenticate() Removed the hard returns from imap and pop3 by using the same style for sending the authentication string as smtp. Moved the "Other mechanisms not supported" check in smtp to match that of imap and pop3 to provide consistency between the three email protocols. --- diff --git a/lib/imap.c b/lib/imap.c index 6bdd5c1ae4..b13bd3da74 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 bace72a11a..6f188b254b 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 ... */ + 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 ... */ - 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 72b3bbf6ac..72a6135ffd 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 ... */ - 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 ... */ + 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;