diff options
author | Daniel Stenberg <daniel@haxx.se> | 2006-01-30 08:20:52 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2006-01-30 08:20:52 +0000 |
commit | 32bc30e210ea41552f3dee64edd290a129020dc7 (patch) | |
tree | b9415c69fddf77aecd8b507a9b7696cdb626aced /lib | |
parent | f3bc8e6ce135df0f438bce85ff5bc82335d5daf8 (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')
-rw-r--r-- | lib/transfer.c | 15 |
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 |