diff options
Diffstat (limited to 'lib/connect.c')
-rw-r--r-- | lib/connect.c | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/lib/connect.c b/lib/connect.c index 8d5d32ba6..2ee28a67e 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -179,13 +179,10 @@ singleipconnect(struct connectdata *conn, * * @unittest: 1303 */ -time_t Curl_timeleft(struct Curl_easy *data, - struct curltime *nowp, - bool duringconnect) +time_t Curl_timeleft(struct Curl_easy *data, bool duringconnect) { int timeout_set = 0; time_t timeout_ms = duringconnect?DEFAULT_CONNECT_TIMEOUT:0; - struct curltime now; /* if a timeout is set, use the most restrictive one */ @@ -217,18 +214,13 @@ time_t Curl_timeleft(struct Curl_easy *data, break; } - if(!nowp) { - now = Curl_tvnow(); - nowp = &now; - } + /* subtract elapsed time, since this most recent connect started or since + the entire operation started */ - /* subtract elapsed time */ - if(duringconnect) - /* since this most recent connect started */ - timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startsingle); - else - /* since the entire operation started */ - timeout_ms -= Curl_tvdiff(*nowp, data->progress.t_startop); + data->state.now = curlx_tvnow(); + timeout_ms -= curlx_tvdiff(data->state.now, duringconnect? + data->progress.t_startsingle: + data->progress.t_startop); if(!timeout_ms) /* avoid returning 0 as that means no timeout! */ return -1; @@ -723,7 +715,6 @@ CURLcode Curl_is_connected(struct connectdata *conn, CURLcode result = CURLE_OK; time_t allow; int error = 0; - struct curltime now; int rc; int i; @@ -737,10 +728,10 @@ CURLcode Curl_is_connected(struct connectdata *conn, return CURLE_OK; } - now = Curl_tvnow(); + data->state.now = curlx_tvnow(); /* figure out how long time we have left to connect */ - allow = Curl_timeleft(data, &now, TRUE); + allow = Curl_timeleft(data, TRUE); if(allow < 0) { /* time-out, bail out, go home */ @@ -765,7 +756,8 @@ CURLcode Curl_is_connected(struct connectdata *conn, if(rc == 0) { /* no connection yet */ error = 0; - if(curlx_tvdiff(now, conn->connecttime) >= conn->timeoutms_per_addr) { + if(curlx_tvdiff(data->state.now, conn->connecttime) >= + conn->timeoutms_per_addr) { infof(data, "After %ldms connect time, move on!\n", conn->timeoutms_per_addr); error = ETIMEDOUT; @@ -773,7 +765,8 @@ CURLcode Curl_is_connected(struct connectdata *conn, /* should we try another protocol family? */ if(i == 0 && conn->tempaddr[1] == NULL && - curlx_tvdiff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) { + curlx_tvdiff(data->state.now, conn->connecttime) >= + HAPPY_EYEBALLS_TIMEOUT) { trynextip(conn, sockindex, 1); } } @@ -1051,7 +1044,7 @@ static CURLcode singleipconnect(struct connectdata *conn, /* set socket non-blocking */ (void)curlx_nonblock(sockfd, TRUE); - conn->connecttime = Curl_tvnow(); + data->state.now = conn->connecttime = curlx_tvnow(); if(conn->num_addr > 1) Curl_expire(data, conn->timeoutms_per_addr, EXPIRE_DNS_PER_NAME); @@ -1136,10 +1129,10 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */ const struct Curl_dns_entry *remotehost) { struct Curl_easy *data = conn->data; - struct curltime before = Curl_tvnow(); CURLcode result = CURLE_COULDNT_CONNECT; + time_t timeout_ms; - time_t timeout_ms = Curl_timeleft(data, &before, TRUE); + timeout_ms = Curl_timeleft(data, TRUE); if(timeout_ms < 0) { /* a precaution, no need to continue if time already is up */ |