diff options
author | Daniel Stenberg <daniel@haxx.se> | 2019-01-27 23:45:42 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-02-01 08:19:40 +0100 |
commit | 6f61933adfa60236ae2b5c57ddfdf3e3a36dcc2a (patch) | |
tree | 6534c69cceb4e6fa5fbfc8d15f41d97f9dedadc5 | |
parent | 427fa512be481b21c4d57b27127766fa26f70d6a (diff) |
multi: set the EXPIRE_*TIMEOUT timers at TIMER_STARTSINGLE time
To make sure Curl_timeleft() also thinks the timeout has been reached
when one of the EXPIRE_*TIMEOUTs expires.
Bug: https://curl.haxx.se/mail/lib-2019-01/0073.html
Reported-by: Zhao Yisha
Closes #3501
-rw-r--r-- | lib/multi.c | 6 | ||||
-rw-r--r-- | lib/transfer.c | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/lib/multi.c b/lib/multi.c index 75ece15ca..130226f56 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -1454,6 +1454,12 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, case CURLM_STATE_CONNECT: /* Connect. We want to get a connection identifier filled in. */ Curl_pgrsTime(data, TIMER_STARTSINGLE); + if(data->set.timeout) + Curl_expire(data, data->set.timeout, EXPIRE_TIMEOUT); + + if(data->set.connecttimeout) + Curl_expire(data, data->set.connecttimeout, EXPIRE_CONNECTTIMEOUT); + result = Curl_connect(data, &async, &protocol_connect); if(CURLE_NO_CONNECTION_AVAILABLE == result) { /* There was no connection available. We will go to the pending diff --git a/lib/transfer.c b/lib/transfer.c index e687e6018..3a18c7bdd 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -1558,12 +1558,6 @@ CURLcode Curl_pretransfer(struct Curl_easy *data) Curl_pgrsResetTransferSizes(data); Curl_pgrsStartNow(data); - if(data->set.timeout) - Curl_expire(data, data->set.timeout, EXPIRE_TIMEOUT); - - if(data->set.connecttimeout) - Curl_expire(data, data->set.connecttimeout, EXPIRE_CONNECTTIMEOUT); - /* 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 consider to be fine */ |