aboutsummaryrefslogtreecommitdiff
path: root/lib/transfer.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2006-01-30 08:20:52 +0000
committerDaniel Stenberg <daniel@haxx.se>2006-01-30 08:20:52 +0000
commit32bc30e210ea41552f3dee64edd290a129020dc7 (patch)
treeb9415c69fddf77aecd8b507a9b7696cdb626aced /lib/transfer.c
parentf3bc8e6ce135df0f438bce85ff5bc82335d5daf8 (diff)
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.
Diffstat (limited to 'lib/transfer.c')
-rw-r--r--lib/transfer.c15
1 files changed, 8 insertions, 7 deletions
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