Michal Marek provided a patch for FTP that makes libcurl continue to try PASV

even after EPSV returned a positive response code, if libcurl failed to
connect to the port number the EPSV response said. Obviously some people are
going through protocol-sensitive firewalls (or similar) that don't understand
EPSV and then they don't allow the second connection unless PASV was
used. This also called for a minor fix of test case 238.
This commit is contained in:
Daniel Stenberg
2006-01-24 14:40:43 +00:00
parent 803582f8ac
commit 67bf4f28ff
4 changed files with 31 additions and 4 deletions

View File

@@ -1661,6 +1661,18 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
Curl_resolv_unlock(data, addr); /* we're done using this address */
if (result && ftp->count1 == 0 && ftpcode == 229) {
infof(data, "got positive EPSV response, but can't connect. "
"Disabling EPSV\n");
/* disable it for next transfer */
conn->bits.ftp_use_epsv = FALSE;
data->state.errorbuf = FALSE; /* allow error message to get rewritten */
NBFTPSENDF(conn, "PASV", NULL);
ftp->count1++;
/* remain in the FTP_PASV state */
return result;
}
if(result)
return result;