Based on an error report by Philippe Vaucher, we no longer count a retried
authorDaniel Stenberg <daniel@haxx.se>
Mon, 30 Jan 2006 08:20:52 +0000 (08:20 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 30 Jan 2006 08:20:52 +0000 (08:20 +0000)
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.

CHANGES
RELEASE-NOTES
lib/transfer.c

diff --git a/CHANGES b/CHANGES
index d262cfb..bfdb149 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,13 @@
 
                                   Changelog
 
+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.
+
 Daniel (24 January 2006)
 - Michal Marek provided a patch for FTP that makes libcurl continue to try
   PASV even after EPSV returned a positive response code, if libcurl failed to
index d2f1c4f..151ce61 100644 (file)
@@ -18,6 +18,9 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ 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
+   connection died on an attempted re-use
  o Try PASV after failing to connect to the port the EPSV response contained
  o -P [IP] with ipv6-enabled curl
  o -P [hostname] with ipv6-disabled curl
@@ -51,6 +54,6 @@ advice from friends like these:
 
  Dov Murik, Jean Jacques Drouin, Andres Garcia, Yang Tse, Gisle Vanem, Dan
  Fandrich, Alexander Lazic, Michael Jahn, Andrew Benham, Bryan Henderson,
- David Shaw, Jon Turner, Duane Cathey, Michal Marek
+ David Shaw, Jon Turner, Duane Cathey, Michal Marek, Philippe Vaucher
  
         Thanks! (and sorry if I forgot to mention someone)
index f84594a..18f8f11 100644 (file)
@@ -1765,17 +1765,18 @@ CURLcode Curl_follow(struct SessionHandle *data,
   size_t newlen;
   char *newest;
 
-  if ((data->set.maxredirs != -1) &&
-      (data->set.followlocation >= data->set.maxredirs)) {
-    failf(data,"Maximum (%d) redirects followed", data->set.maxredirs);
-    return CURLE_TOO_MANY_REDIRECTS;
-  }
+  if(!retry) {
+    if ((data->set.maxredirs != -1) &&
+        (data->set.followlocation >= data->set.maxredirs)) {
+      failf(data,"Maximum (%d) redirects followed", data->set.maxredirs);
+      return CURLE_TOO_MANY_REDIRECTS;
+    }
 
-  if(!retry)
     /* mark the next request as a followed location: */
     data->state.this_is_a_follow = TRUE;
 
-  data->set.followlocation++; /* count location-followers */
+    data->set.followlocation++; /* count location-followers */
+  }
 
   if(data->set.http_auto_referer) {
     /* We are asked to automatically set the previous URL as the