diff options
author | Daniel Stenberg <daniel@haxx.se> | 2013-08-05 23:49:53 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2013-08-06 09:57:59 +0200 |
commit | 7cc00d9a832c42a330888aa5c11a2abad1bd5ac0 (patch) | |
tree | 6a5cd7dd22df9292abd502fed6b5e25c72bcecbd /lib/url.h | |
parent | 230e16dc033a05ad9b2ed8a499f74b69886e0865 (diff) | |
download | curl-7cc00d9a832c42a330888aa5c11a2abad1bd5ac0.tar.gz |
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
Diffstat (limited to 'lib/url.h')
-rw-r--r-- | lib/url.h | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -37,7 +37,7 @@ CURLcode Curl_close(struct SessionHandle *data); /* opposite of curl_open() */ CURLcode Curl_connect(struct SessionHandle *, struct connectdata **, bool *async, bool *protocol_connect); CURLcode Curl_do(struct connectdata **, bool *done); -CURLcode Curl_do_more(struct connectdata *, bool *completed); +CURLcode Curl_do_more(struct connectdata *, int *completed); CURLcode Curl_done(struct connectdata **, CURLcode, bool premature); CURLcode Curl_disconnect(struct connectdata *, bool dead_connection); CURLcode Curl_protocol_connect(struct connectdata *conn, bool *done); |