diff options
| -rw-r--r-- | CHANGES | 7 | ||||
| -rw-r--r-- | RELEASE-NOTES | 5 | ||||
| -rw-r--r-- | lib/transfer.c | 15 | 
3 files changed, 19 insertions, 8 deletions
@@ -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 diff --git a/RELEASE-NOTES b/RELEASE-NOTES index d2f1c4f0e..151ce6175 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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) diff --git a/lib/transfer.c b/lib/transfer.c index f84594a9e..18f8f1124 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -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  | 
