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:
parent
b1826d81fb
commit
379d63ecc7
15
lib/imap.c
15
lib/imap.c
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user