FTP: prevent the multi interface from blocking

As pointed out in Bug report #3579064, curl_multi_perform() would
wrongly use a blocking mechanism internally for some commands which
could lead to for example a very long block if the LIST response never
showed.

The solution was to make sure to properly continue to use the multi
interface non-blocking state machine.

The new test 1501 verifies the fix.

Bug: http://curl.haxx.se/bug/view.cgi?id=3579064
Reported by: Guido Berhoerster
This commit is contained in:
Daniel Stenberg
2012-11-04 18:22:48 +01:00
parent 7c0f201075
commit b2954e66e8
9 changed files with 234 additions and 22 deletions

View File

@@ -52,6 +52,7 @@ Moooooooooooo for 592
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
# a 421 response must prevent further commands from being sent
<protocol>
USER anonymous
PASS ftp@example.com
@@ -61,10 +62,10 @@ EPRT |1|
PORT
TYPE I
STOR 592
QUIT
</protocol>
# 28 == CURLE_OPERATION_TIMEDOUT
<errorcode>
10
28
</errorcode>
<upload>
</upload>