sasl: implement EXTERNAL authentication mechanism.

Its use is only enabled by explicit requirement in URL (;AUTH=EXTERNAL) and
by not setting the password.
This commit is contained in:
Patrick Monnerat
2015-01-27 17:24:55 +01:00
parent e1bb13c09f
commit 0d24f64473
5 changed files with 135 additions and 75 deletions

View File

@@ -612,9 +612,9 @@ static CURLcode imap_perform_authentication(struct connectdata *conn)
struct imap_conn *imapc = &conn->proto.imapc;
saslprogress progress;
/* Check we have a username and password to authenticate with and end the
/* Check we have enough data to authenticate with and end the
connect phase if we don't */
if(!conn->bits.user_passwd) {
if(!Curl_sasl_can_authenticate(&imapc->sasl, conn)) {
state(conn, IMAP_STOP);
return result;
}
@@ -1962,7 +1962,7 @@ static CURLcode imap_parse_url_options(struct connectdata *conn)
case SASL_AUTH_NONE:
imapc->preftype = IMAP_TYPE_NONE;
break;
case SASL_AUTH_ANY:
case SASL_AUTH_DEFAULT:
imapc->preftype = IMAP_TYPE_ANY;
break;
default: