diff options
author | Steve Holme <steve_holme@hotmail.com> | 2012-12-29 19:23:10 +0000 |
---|---|---|
committer | Steve Holme <steve_holme@hotmail.com> | 2012-12-29 19:23:10 +0000 |
commit | 488245f99c541258ca4b35209e17da69e52e4460 (patch) | |
tree | 5c5908ae174d3c6720a2b962c4122e24d6128b53 | |
parent | 27f90c09626658cab41b06f9b4c3cb8587fc7fcb (diff) |
imap.c: Fixed bad state error when logging in with invalid credentials
Fixed a problem with the state machine when attempting to log in with
invalid credentials. The server would report login failure but libcurl
would not read the response due to inappropriate IMAP_STOP states being
set after the login was sent.
-rw-r--r-- | lib/imap.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/imap.c b/lib/imap.c index 18a4b16f2..72ede7e45 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -462,7 +462,7 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn, else { if(data->state.used_interface == Curl_if_multi) { state(conn, IMAP_UPGRADETLS); - return imap_state_upgrade_tls(conn); + result = imap_state_upgrade_tls(conn); } else { result = Curl_ssl_connect(conn, FIRSTSOCKET); @@ -473,8 +473,6 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn, } } - state(conn, IMAP_STOP); - return result; } @@ -488,7 +486,6 @@ static CURLcode imap_state_upgrade_tls(struct connectdata *conn) if(imapc->ssldone) { imap_to_imaps(conn); result = imap_state_login(conn); - state(conn, IMAP_STOP); } return result; @@ -508,9 +505,9 @@ static CURLcode imap_state_login_resp(struct connectdata *conn, failf(data, "Access denied. %c", imapcode); result = CURLE_LOGIN_DENIED; } - - /* End of connect phase */ - state(conn, IMAP_STOP); + else + /* End of connect phase */ + state(conn, IMAP_STOP); return result; } @@ -655,6 +652,7 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, /* We don't know how to parse this line */ result = CURLE_FTP_WEIRD_SERVER_REPLY; /* TODO: fix this code */ + /* End of do phase */ state(conn, IMAP_STOP); return result; |