Commit 12f5c67b authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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.
parent d7a83d89
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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
+2 −0
Original line number Diff line number Diff line
@@ -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/

+7 −6
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2005, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, 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);