ftp: fix "AUTH TLS" on primary conn and for SSL in PASV second conn

Follow-up to dafdb20a26

Reported-by: Anthony Hu
Closes #9948
This commit is contained in:
Stefan Eissing 2022-11-18 21:33:37 +01:00 committed by Daniel Stenberg
parent e08382a208
commit 8ed97ad2bd
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -2747,6 +2747,13 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
if((ftpcode == 234) || (ftpcode == 334)) {
/* this was BLOCKING, keep it so for now */
bool done;
if(!Curl_cfilter_ssl_added(data, conn, FIRSTSOCKET)) {
result = Curl_cfilter_ssl_add(data, conn, FIRSTSOCKET);
if(result) {
/* we failed and bail out */
return CURLE_USE_SSL_FAILED;
}
}
result = Curl_cfilter_connect(data, conn, FIRSTSOCKET, TRUE, &done);
if(!result) {
conn->bits.ftp_use_data_ssl = FALSE; /* clear-text data */
@ -3557,7 +3564,8 @@ static CURLcode ftp_do_more(struct Curl_easy *data, int *completep)
if(conn->cfilter[SECONDARYSOCKET]) {
result = Curl_cfilter_connect(data, conn, SECONDARYSOCKET,
FALSE, &connected);
if(result || !connected) {
if(result ||
(!connected && conn->sock[SECONDARYSOCKET] == CURL_SOCKET_BAD)) {
if(result && (ftpc->count1 == 0)) {
*completep = -1; /* go back to DOING please */
/* this is a EPSV connect failing, try PASV instead */