From db4f69ef0630001e6d566b949d86d1739bdd85b3 Mon Sep 17 00:00:00 2001 From: Steve Holme Date: Tue, 3 Jan 2012 23:17:08 +0000 Subject: [PATCH] Fixed use of CURLUSESSL_TRY for POP3 and IMAP based connections. Fixed a problem in POP3 and IMAP where a connection would fail when CURLUSESSL_TRY was specified for a server that didn't support SSL/TLS connections rather than continuing. --- lib/imap.c | 8 ++++++-- lib/pop3.c | 10 +++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/imap.c b/lib/imap.c index ba6c61078..c39664d86 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -354,8 +354,12 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn, (void)instate; /* no use for this yet */ if(imapcode != 'O') { - failf(data, "STARTTLS denied. %c", imapcode); - result = CURLE_USE_SSL_FAILED; + if(data->set.use_ssl != CURLUSESSL_TRY) { + failf(data, "STARTTLS denied. %c", imapcode); + result = CURLE_USE_SSL_FAILED; + } + else + result = imap_state_login(conn); } else { if(data->state.used_interface == Curl_if_multi) { diff --git a/lib/pop3.c b/lib/pop3.c index 283025120..b7781109b 100644 --- a/lib/pop3.c +++ b/lib/pop3.c @@ -298,9 +298,13 @@ static CURLcode pop3_state_starttls_resp(struct connectdata *conn, (void)instate; /* no use for this yet */ if(pop3code != 'O') { - failf(data, "STARTTLS denied. %c", pop3code); - result = CURLE_USE_SSL_FAILED; - state(conn, POP3_STOP); + if(data->set.use_ssl != CURLUSESSL_TRY) { + failf(data, "STARTTLS denied. %c", pop3code); + result = CURLE_USE_SSL_FAILED; + state(conn, POP3_STOP); + } + else + result = pop3_state_user(conn); } else { /* Curl_ssl_connect is BLOCKING */