mirror of
https://github.com/curl/curl.git
synced 2024-11-27 05:50:21 +08:00
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:
parent
803582f8ac
commit
67bf4f28ff
8
CHANGES
8
CHANGES
@ -6,6 +6,14 @@
|
|||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
Daniel (24 January 2006)
|
||||||
|
- 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.
|
||||||
|
|
||||||
Daniel (20 January 2006)
|
Daniel (20 January 2006)
|
||||||
- Duane Cathey was one of our friends who reported that curl -P [IP]
|
- Duane Cathey was one of our friends who reported that curl -P [IP]
|
||||||
(CURLOPT_FTPPORT) didn't work for ipv6-enabed curls if the IP wasn't a
|
(CURLOPT_FTPPORT) didn't work for ipv6-enabed curls if the IP wasn't a
|
||||||
|
@ -18,6 +18,7 @@ This release includes the following changes:
|
|||||||
|
|
||||||
This release includes the following bugfixes:
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
|
o Try PASV after failing to connect to the port the EPSV response contained
|
||||||
o -P [IP] with ipv6-enabled curl
|
o -P [IP] with ipv6-enabled curl
|
||||||
o -P [hostname] with ipv6-disabled curl
|
o -P [hostname] with ipv6-disabled curl
|
||||||
o libcurl.m4 was updated
|
o libcurl.m4 was updated
|
||||||
@ -45,6 +46,6 @@ advice from friends like these:
|
|||||||
|
|
||||||
Dov Murik, Jean Jacques Drouin, Andres Garcia, Yang Tse, Gisle Vanem, Dan
|
Dov Murik, Jean Jacques Drouin, Andres Garcia, Yang Tse, Gisle Vanem, Dan
|
||||||
Fandrich, Alexander Lazic, Michael Jahn, Andrew Benham, Bryan Henderson,
|
Fandrich, Alexander Lazic, Michael Jahn, Andrew Benham, Bryan Henderson,
|
||||||
David Shaw, Jon Turner, Duane Cathey
|
David Shaw, Jon Turner, Duane Cathey, Michal Marek
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
12
lib/ftp.c
12
lib/ftp.c
@ -1661,6 +1661,18 @@ static CURLcode ftp_state_pasv_resp(struct connectdata *conn,
|
|||||||
|
|
||||||
Curl_resolv_unlock(data, addr); /* we're done using this address */
|
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)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
|
@ -8,26 +8,32 @@
|
|||||||
ftp
|
ftp
|
||||||
</server>
|
</server>
|
||||||
<name>
|
<name>
|
||||||
FTP getting bad port in 229-response to EPSV
|
FTP getting bad port in response to EPSV and in response to PASV
|
||||||
</name>
|
</name>
|
||||||
<command>
|
<command>
|
||||||
ftp://%HOSTIP:%FTPPORT/238
|
ftp://%HOSTIP:%FTPPORT/238
|
||||||
</command>
|
</command>
|
||||||
<file name="log/ftpserver.cmd">
|
<file name="log/ftpserver.cmd">
|
||||||
REPLY EPSV 229 Entering Passiv Mode (|||1000000|)
|
REPLY EPSV 229 Entering Passiv Mode (|||1000000|)
|
||||||
|
REPLY PASV 227 Entering Passiv Mode (1216,256,2,127,127,127)
|
||||||
</file>
|
</file>
|
||||||
</client>
|
</client>
|
||||||
|
|
||||||
# Verify data after the test has been "shot"
|
# Verify data after the test has been "shot"
|
||||||
<verify>
|
<verify>
|
||||||
# 7 => CURLE_COULDNT_CONNECT
|
# curl: (15) Can't resolve new host 1216.256.2.127:32639
|
||||||
|
# 15 => CURLE_FTP_CANT_GET_HOST
|
||||||
|
# some systems just don't fail on the illegal host name/address but instead
|
||||||
|
# moves on and attempt to connect to... yes, to what?
|
||||||
|
# 7= CURLE_COULDNT_CONNECT
|
||||||
<errorcode>
|
<errorcode>
|
||||||
7
|
7, 15
|
||||||
</errorcode>
|
</errorcode>
|
||||||
<protocol>
|
<protocol>
|
||||||
USER anonymous
|
USER anonymous
|
||||||
PASS curl_by_daniel@haxx.se
|
PASS curl_by_daniel@haxx.se
|
||||||
PWD
|
PWD
|
||||||
EPSV
|
EPSV
|
||||||
|
PASV
|
||||||
</protocol>
|
</protocol>
|
||||||
</verify>
|
</verify>
|
||||||
|
Loading…
Reference in New Issue
Block a user