diff options
author | Daniel Stenberg <daniel@haxx.se> | 2014-05-15 20:43:32 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2014-05-15 21:28:19 +0200 |
commit | 84bd19ffd4374fd7b4fbe5a0ee0ecbf263d52ede (patch) | |
tree | 3262cadb8d5a84edfa0ce7b7e758309f4d56861c /lib/progress.c | |
parent | 678239df547bacf762dea664dabf1ce207f0a048 (diff) | |
download | curl-84bd19ffd4374fd7b4fbe5a0ee0ecbf263d52ede.tar.gz |
timers: fix timer regression involving redirects / reconnects
In commit 0b3750b5c23c25f (released in 7.36.0) we fixed a timeout issue
but instead broke the timings.
To fix this, I introduce a new timestamp to use for the timeouts and
restored the previous timestamp and timestamp position so that the old
timer functionality is restored.
In addition to that, that change also broke connection timeouts for when
more than one connect was used (as it would then count the total time
from the first connect and not for the most recent one). Now
Curl_timeleft() has been modified so that it checks against different
start times depending on which timeout it checks.
Test 1303 is updated accordingly.
Bug: http://curl.haxx.se/mail/lib-2014-05/0147.html
Reported-by: Ryan Braud
Diffstat (limited to 'lib/progress.c')
-rw-r--r-- | lib/progress.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/progress.c b/lib/progress.c index a242f8bc2..e6a8d825a 100644 --- a/lib/progress.c +++ b/lib/progress.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2014, 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 @@ -172,8 +172,12 @@ void Curl_pgrsTime(struct SessionHandle *data, timerid timer) case TIMER_NONE: /* mistake filter */ break; + case TIMER_STARTOP: + /* This is set at the start of a transfer */ + data->progress.t_startop = now; + break; case TIMER_STARTSINGLE: - /* This is set at the start of a single fetch */ + /* This is set at the start of each single fetch */ data->progress.t_startsingle = now; break; |