diff --git a/CHANGES b/CHANGES index bcb0cf864..d832e811f 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,12 @@ Changelog +Daniel (8 February 2006) +- Philippe Vaucher provided a brilliant piece of test code that show a problem + with re-used FTP connections. If the second request on the same connection + was set not to fetch a "body", libcurl could get confused and consider it an + attempt to use a dead connection and would go acting mighty strange. + Daniel (2 February 2006) - Make --limit-rate [num] mean bytes. It used to be that but it broke in my change done in November 2005. @@ -18,8 +24,7 @@ Daniel (30 January 2006) - Based on an error report by Philippe Vaucher, we no longer count a retried connection setup as a follow-redirect. It turns out 1) this fails when a FTP connection is re-setup and 2) it does make the max-redirs counter behave - wrong. This fix was not verified since the reporter vanished, but I believe - this is the right fix nonetheless. + wrong. Daniel (24 January 2006) - Michal Marek provided a patch for FTP that makes libcurl continue to try diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 899f366e6..9c9c7a675 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -20,6 +20,7 @@ This release includes the following changes: This release includes the following bugfixes: + o re-used FTP connections when the second request didn't do a transfer o plain --limit-rate [num] means bytes o re-creating a dead connection is no longer counted internally as a followed redirect and thus prevents a weird error that would occur if a FTP @@ -49,6 +50,7 @@ Other curl-related news since the previous public release: o http://curl.s-lines.net/ is a new curl web mirror in Japan o http://curl.oss-mirror.org/ is a new curl web mirror in Ireland o http://curl.linux-mirror.org/ is a new curl web mirror in Germany + o pycurl 7.15.1 was released: http://pycurl.sf.net/ o TclCurl 0.15.1 was released: http://personal1.iddeo.es/andresgarci/tclcurl/english/ diff --git a/lib/transfer.c b/lib/transfer.c index 18f8f1124..50a8bae98 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2005, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -2100,11 +2100,12 @@ bool Curl_retry_request(struct connectdata *conn, bool retry = FALSE; if((conn->keep.bytecount+conn->headerbytecount == 0) && - conn->bits.reuse) { - /* We got no data and we attempted to re-use a connection. This might - happen if the connection was left alive when we were done using it - before, but that was closed when we wanted to read from it again. Bad - luck. Retry the same request on a fresh connect! */ + conn->bits.reuse && + !conn->bits.no_body) { + /* We got no data, we attempted to re-use a connection and yet we want a + "body". This might happen if the connection was left alive when we were + done using it before, but that was closed when we wanted to read from + it again. Bad luck. Retry the same request on a fresh connect! */ infof(conn->data, "Connection died, retrying a fresh connect\n"); *url = strdup(conn->data->change.url);