aboutsummaryrefslogtreecommitdiff
path: root/lib/transfer.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2013-12-02 15:33:32 +0100
committerDaniel Stenberg <daniel@haxx.se>2013-12-15 22:53:41 +0100
commitbe28223f350ebd5a07de86d28b98a129952ccc60 (patch)
treeeda18b3610fea61db51de91322105c8e59891b5b /lib/transfer.c
parent8e2d73bbde36066c67fe47f600355be788a5e1a8 (diff)
multi: add timer inaccuracy margin to timeout/connecttimeout
Since all systems have inaccuracy in the timeout handling it is imperative that we add an inaccuracy margin to the general timeout and connecttimeout handling with the multi interface. This way, when the timeout fires we should be fairly sure that it has passed the timeout value and will be suitably detected. For cases where the timeout fire before the actual timeout, we would otherwise consume the timeout action and still not run the timeout code since the condition wasn't met. Reported-by: He Qin Bug: http://curl.haxx.se/bug/view.cgi?id=1298
Diffstat (limited to 'lib/transfer.c')
-rw-r--r--lib/transfer.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 533e394b6..e3194415b 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -1309,10 +1309,11 @@ CURLcode Curl_pretransfer(struct SessionHandle *data)
Curl_pgrsStartNow(data);
if(data->set.timeout)
- Curl_expire(data, data->set.timeout);
+ Curl_expire(data, data->set.timeout + MULTI_TIMEOUT_INACCURACY_MS);
if(data->set.connecttimeout)
- Curl_expire(data, data->set.connecttimeout);
+ Curl_expire(data, data->set.connecttimeout +
+ MULTI_TIMEOUT_INACCURACY_MS);
/* In case the handle is re-used and an authentication method was picked
in the session we need to make sure we only use the one(s) we now