mirror of
https://github.com/curl/curl.git
synced 2026-07-23 20:17:15 +03:00
ip-happy: prevent event-based stall on retry
When delaying an IP happy eyeball restart, set an actual timer or the connection will stall when running event based. Closes #18815
This commit is contained in:
parent
e5316069f1
commit
95ac33fc4f
1 changed files with 10 additions and 4 deletions
|
|
@ -461,10 +461,10 @@ evaluate:
|
|||
else if(inconclusive) {
|
||||
/* tried all addresses, no success but some where inconclusive.
|
||||
* Let's restart the inconclusive ones. */
|
||||
if(curlx_timediff(now, bs->last_attempt_started) >=
|
||||
bs->attempt_delay_ms) {
|
||||
CURL_TRC_CF(data, cf, "tried all addresses with inconclusive results"
|
||||
", restarting one");
|
||||
timediff_t since_ms = curlx_timediff(now, bs->last_attempt_started);
|
||||
timediff_t delay_ms = bs->attempt_delay_ms - since_ms;
|
||||
if(delay_ms <= 0) {
|
||||
CURL_TRC_CF(data, cf, "all attempts inconclusive, restarting one");
|
||||
i = -1;
|
||||
for(a = bs->running; a; a = a->next) {
|
||||
++i;
|
||||
|
|
@ -479,6 +479,12 @@ evaluate:
|
|||
}
|
||||
DEBUGASSERT(0); /* should not come here */
|
||||
}
|
||||
else {
|
||||
/* let's wait some more before restarting */
|
||||
infof(data, "connect attempts inconclusive, retrying "
|
||||
"in %" FMT_TIMEDIFF_T "ms", delay_ms);
|
||||
Curl_expire(data, delay_ms, EXPIRE_HAPPY_EYEBALLS);
|
||||
}
|
||||
/* attempt timeout for restart has not expired yet */
|
||||
goto out;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue