diff --git a/CHANGES b/CHANGES index 8a77b0487b3554e58f6af568b6a6ff19ac4de239..050f161b07057f0f22c08a60e0e4c02c49dbb2a2 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,13 @@ Changelog +Daniel Stenberg (31 Aug 2009) +- When using the multi interface with FTP and you asked for NOBODY, you did no + QUOTE commands and the request used the same path as the connection had + already changed to, it would decide that no commands would be necessary for + the "DO" action and that was not handled properly but libcurl would instead + hang. + Kamil Dudka (28 Aug 2009) - Improved error message for not matching certificate subject name in libcurl-NSS. Originally reported at: diff --git a/RELEASE-NOTES b/RELEASE-NOTES index fbdd93ff4d8913779fef519c3779ce952d012b2f..d35158624234572c8de7e55ade7790e1e5a6cb3e 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -10,6 +10,7 @@ Curl and libcurl 7.19.7 This release includes the following changes: o -T. is now for non-blocking uploading from stdin + o SYST handling on FTP for OS/400 FTP server cases This release includes the following bugfixes: @@ -21,6 +22,9 @@ This release includes the following bugfixes: o missing strdup() return code check o CURLOPT_PROXY_TRANSFER_MODE could pass along wrong syntax o configure --with-gnutls=PATH fixed + o ftp response reader bug on failed control connections + o improved NSS error message on failed host name verifications + o ftp NOBODY on re-used connection hang This release includes the following known bugs: diff --git a/lib/ftp.c b/lib/ftp.c index 26cf197953f421f305067af89f2577155ec2e4d7..99115dda63ef2fcf32603e8e928632ed578d311b 100644 --- a/lib/ftp.c +++ b/lib/ftp.c @@ -3026,10 +3026,14 @@ static CURLcode ftp_multi_statemach(struct connectdata *conn, } else if(rc != 0) { result = ftp_statemach_act(conn); - *done = (bool)(ftpc->state == FTP_STOP); } /* if rc == 0, then select() timed out */ + /* Check for the state outside of the Curl_socket_ready() return code checks + since at times we are in fact already in this state when this function + gets called. */ + *done = (bool)(ftpc->state == FTP_STOP); + return result; }