diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 2ade98a00..f73486614 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -24,6 +24,7 @@ This release includes the following bugfixes: o ftp: prevent server from hanging on closed data connection when stopping a transfer before the end of the full transfer (ranges) o LDAP: detect non-binary attributes properly + o ftp: treat server's response 421 as CURLE_OPERATION_TIMEDOUT This release includes the following known bugs: diff --git a/lib/ftp.c b/lib/ftp.c index d79878e82..416e5ecfa 100644 --- a/lib/ftp.c +++ b/lib/ftp.c @@ -425,6 +425,12 @@ static CURLcode ftp_readresp(curl_socket_t sockfd, if(ftpcode) *ftpcode = code; + if(421 == code) + /* 421 means "Service not available, closing control connection." and FTP + * servers use it to signal that idle session timeout has been exceeded. + * If we ignored the response, it could end up hanging in some cases. */ + return CURLE_OPERATION_TIMEDOUT; + return result; }