aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--RELEASE-NOTES1
-rw-r--r--lib/ftp.c6
2 files changed, 7 insertions, 0 deletions
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;
}