]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
ftp: clear the do_more bit when the server has connected
authorDaniel Stenberg <daniel@haxx.se>
Fri, 21 Aug 2015 11:30:08 +0000 (13:30 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 21 Aug 2015 11:30:08 +0000 (13:30 +0200)
The multi state machine would otherwise go into the DO_MORE state after
DO, even for the case when the FTP state machine had already performed
those duties, which caused libcurl to get stuck in that state and fail
miserably. This occured for for active ftp uploads.

Reported-by: Patricia Muscalu
lib/ftp.c

index fade092e4e2cfe46828a7d0f55964371c1903faa..7b7e11389fbd6d5f0730dc892e331e61732ae334 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -340,6 +340,9 @@ static CURLcode AcceptServerConnect(struct connectdata *conn)
     return CURLE_FTP_PORT_FAILED;
   }
   infof(data, "Connection accepted from server\n");
+  /* when this happens within the DO state it is important that we mark us as
+     not needing DO_MORE anymore */
+  conn->bits.do_more = FALSE;
 
   conn->sock[SECONDARYSOCKET] = s;
   (void)curlx_nonblock(s, TRUE); /* enable non-blocking */