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.
This commit is contained in:
Родитель
27f90c0962
Коммит
488245f99c
12
lib/imap.c
12
lib/imap.c
|
@ -462,7 +462,7 @@ static CURLcode imap_state_starttls_resp(struct connectdata *conn,
|
||||||
else {
|
else {
|
||||||
if(data->state.used_interface == Curl_if_multi) {
|
if(data->state.used_interface == Curl_if_multi) {
|
||||||
state(conn, IMAP_UPGRADETLS);
|
state(conn, IMAP_UPGRADETLS);
|
||||||
return imap_state_upgrade_tls(conn);
|
result = imap_state_upgrade_tls(conn);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result = Curl_ssl_connect(conn, FIRSTSOCKET);
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -488,7 +486,6 @@ static CURLcode imap_state_upgrade_tls(struct connectdata *conn)
|
||||||
if(imapc->ssldone) {
|
if(imapc->ssldone) {
|
||||||
imap_to_imaps(conn);
|
imap_to_imaps(conn);
|
||||||
result = imap_state_login(conn);
|
result = imap_state_login(conn);
|
||||||
state(conn, IMAP_STOP);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -508,9 +505,9 @@ static CURLcode imap_state_login_resp(struct connectdata *conn,
|
||||||
failf(data, "Access denied. %c", imapcode);
|
failf(data, "Access denied. %c", imapcode);
|
||||||
result = CURLE_LOGIN_DENIED;
|
result = CURLE_LOGIN_DENIED;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
/* End of connect phase */
|
/* End of connect phase */
|
||||||
state(conn, IMAP_STOP);
|
state(conn, IMAP_STOP);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -655,6 +652,7 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn,
|
||||||
/* We don't know how to parse this line */
|
/* We don't know how to parse this line */
|
||||||
result = CURLE_FTP_WEIRD_SERVER_REPLY; /* TODO: fix this code */
|
result = CURLE_FTP_WEIRD_SERVER_REPLY; /* TODO: fix this code */
|
||||||
|
|
||||||
|
/* End of do phase */
|
||||||
state(conn, IMAP_STOP);
|
state(conn, IMAP_STOP);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче