From 7cc00d9a832c42a330888aa5c11a2abad1bd5ac0 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 5 Aug 2013 23:49:53 +0200 Subject: FTP: when EPSV gets a 229 but fails to connect, retry with PASV This is a regression as this logic used to work. It isn't clear when it broke, but I'm assuming in 7.28.0 when we went all-multi internally. This likely never worked with the multi interface. As the failed connection is detected once the multi state has reached DO_MORE, the Curl_do_more() function was now expanded somewhat so that the ftp_do_more() function can request to go "back" to the previous state when it makes another attempt - using PASV. Added test case 1233 to verify this fix. It has the little issue that it assumes no service is listening/accepting connections on port 1... Reported-by: byte_bucket in the #curl IRC channel --- tests/data/test1233 | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 tests/data/test1233 (limited to 'tests/data/test1233') diff --git a/tests/data/test1233 b/tests/data/test1233 new file mode 100644 index 000000000..caf0527f2 --- /dev/null +++ b/tests/data/test1233 @@ -0,0 +1,46 @@ + + + +FTP + + + +# Server-side + + +# Assuming there's nothing listening on port 1 +REPLY EPSV 229 Entering Passiv Mode (|||1|) + + +here are some bytes + + + +# Client-side + + +ftp + + +FTP failing to connect to EPSV port, switching to PASV + + +ftp://%HOSTIP:%FTPPORT/1233 + + + +# Verify data after the test has been "shot" + + +USER anonymous +PASS ftp@example.com +PWD +EPSV +PASV +TYPE I +SIZE 1233 +RETR 1233 +QUIT + + + -- cgit v1.2.3