1
0
mirror of https://github.com/moparisthebest/curl synced 2025-02-28 17:31:46 -05:00

imap.c: Fixed failure detection during TLS upgrade

imap_state_upgrade_tls() would attempt to incorrectly complete the
upgrade to imaps and start the CAPABILITY command if
Curl_ssl_connect_nonblocking() returned a failure code and if ssldone
was set to TRUE. This would only happen when a non-blocking API hadn't
been provided by the SSL implementation and curlssl_connect() was
called underneath.
This commit is contained in:
Steve Holme 2013-01-24 20:22:20 +00:00
parent b1826d81fb
commit 379d63ecc7

View File

@ -627,10 +627,8 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn,
else
result = imap_state_capability(conn);
}
else {
state(conn, IMAP_UPGRADETLS);
else
result = imap_state_upgrade_tls(conn);
}
return result;
}
@ -642,9 +640,14 @@ static CURLcode imap_state_upgrade_tls(struct connectdata *conn)
result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &imapc->ssldone);
if(imapc->ssldone) {
imap_to_imaps(conn);
result = imap_state_capability(conn);
if(!result) {
if(imapc->state != IMAP_UPGRADETLS)
state(conn, IMAP_UPGRADETLS);
if(imapc->ssldone) {
imap_to_imaps(conn);
result = imap_state_capability(conn);
}
}
return result;