aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/imap.c43
-rw-r--r--lib/pop3.c58
-rw-r--r--lib/smtp.c36
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;