aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ftp.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/ftp.c b/lib/ftp.c
index 20138fc02..c4c974e9b 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -877,11 +877,13 @@ static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks,
remote site, or we could wait for that site to connect to us. Or just
handle ordinary commands.
- When waiting for a connect, we can be in FTP_STOP state (or we're in
- FTP_STOR when we do an upload) and then we wait for the secondary socket
- to become writeable. . If we're in another state, we're still handling
- commands on the control (primary) connection.
+ When waiting for a connect (in PORT mode), we can be in FTP_STOP state
+ (or we're in FTP_STOR when we do an upload) and then we wait for the
+ secondary socket to become writeable. If we're in STOR or STOP in passive
+ mode, we already have the seconnd connection done.
+ If we're in another state, we're still handling commands on the control
+ (primary) connection.
*/
switch(ftpc->state) {
@@ -893,7 +895,7 @@ static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks,
}
socks[0] = conn->sock[SECONDARYSOCKET];
- if(ftpc->wait_data_conn) {
+ if(ftpc->wait_data_conn || !conn->data->set.ftp_use_port) {
socks[1] = conn->sock[FIRSTSOCKET];
return GETSOCK_READSOCK(0) | GETSOCK_READSOCK(1);
}