mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
connect: fix race condition with happy eyeballs timeout
The timer should be started after conn->connecttime is set. Otherwise the timer could expire without this condition being true: /* should we try another protocol family? */ if(i == 0 && conn->tempaddr[1] == NULL && curlx_tvdiff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) { Ref: #1928
This commit is contained in:
parent
c66d94d6da
commit
49d75a4c15
@ -1161,7 +1161,6 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
|||||||
conn->tempaddr[1] = NULL;
|
conn->tempaddr[1] = NULL;
|
||||||
conn->tempsock[0] = CURL_SOCKET_BAD;
|
conn->tempsock[0] = CURL_SOCKET_BAD;
|
||||||
conn->tempsock[1] = CURL_SOCKET_BAD;
|
conn->tempsock[1] = CURL_SOCKET_BAD;
|
||||||
Curl_expire(conn->data, HAPPY_EYEBALLS_TIMEOUT, EXPIRE_HAPPY_EYEBALLS);
|
|
||||||
|
|
||||||
/* Max time for the next connection attempt */
|
/* Max time for the next connection attempt */
|
||||||
conn->timeoutms_per_addr =
|
conn->timeoutms_per_addr =
|
||||||
@ -1182,6 +1181,7 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
|||||||
}
|
}
|
||||||
|
|
||||||
data->info.numconnects++; /* to track the number of connections made */
|
data->info.numconnects++; /* to track the number of connections made */
|
||||||
|
Curl_expire(conn->data, HAPPY_EYEBALLS_TIMEOUT, EXPIRE_HAPPY_EYEBALLS);
|
||||||
|
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user