on FTP errors in the transient 5xx range. Transient FTP errors are in the
4xx range. The code itself only tried on 5xx errors that occured _at login_.
Now the retry code retries on all FTP transfer failures that ended with a
4xx response.
(http://curl.haxx.se/bug/view.cgi?id=
2911279)
Changelog
Daniel Stenberg (10 Dec 2009)
+- Siegfried Gyuricsko found out that the curl manual said --retry would retry
+ on FTP errors in the transient 5xx range. Transient FTP errors are in the
+ 4xx range. The code itself only tried on 5xx errors that occured _at login_.
+ Now the retry code retries on all FTP transfer failures that ended with a
+ 4xx response.
+
+ (http://curl.haxx.se/bug/view.cgi?id=2911279)
+
- Constantine Sapuntzakis figured out a case which would lead to libcurl
accessing alredy freed memory and thus crash when using HTTPS (with
OpenSSL), multi interface and the CURLOPT_DEBUGFUNCTION and a certain order
o TFTP BLKSIZE
o Expect: 100-continue handling when set by the application
o multi interface with OpenSSL read already freed memory when closing down
+ o --retry didn't do right for FTP transient errors
This release includes the following known bugs:
Yang Tse, Kamil Dudka, Christian Schmitz, Constantine Sapuntzakis,
Marco Maggi, Camille Moncelier, Claes Jakobsson, Kevin Baughman,
Marc Kleine-Budde, Jad Chamcham, Bjorn Augustsson, David Byron,
- Markus Koetter, Chad Monroe, Martin Storsjo
+ Markus Koetter, Chad Monroe, Martin Storsjo, Siegfried Gyuricsko
Thanks! (and sorry if I forgot to mention someone)
If a transient error is returned when curl tries to perform a transfer, it
will retry this number of times before giving up. Setting the number to 0
makes curl do no retries (which is the default). Transient error means either:
-a timeout, an FTP 5xx response code or an HTTP 5xx response code.
+a timeout, an FTP 4xx response code or an HTTP 5xx response code.
When curl is about to retry a transfer, it will first wait one second and then
for all forthcoming retries it will double the waiting time until it reaches
}
}
} /* if CURLE_OK */
- else if(CURLE_LOGIN_DENIED == res) {
+ else if(res) {
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
- if(response/100 == 5)
+ if(response/100 == 4)
/*
* This is typically when the FTP server only allows a certain
- * amount of users and we are not one of them. It mostly
- * returns 530 in this case, but all 5xx codes are transient.
+ * amount of users and we are not one of them. All 4xx codes
+ * are transient.
*/
retry = RETRY_FTP;
}
# Server-side
<reply>
<servercmd>
-REPLY PASS 530 temporarily not available
+REPLY PASS 430 temporarily not available
</servercmd>
</reply>