summaryrefslogtreecommitdiff
path: root/lib/connect.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/connect.c')
-rw-r--r--lib/connect.c39
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 */