mirror of
https://github.com/curl/curl.git
synced 2026-08-25 19:33:32 +03:00
Curl_speedcheck: don't mistakenly clear Curl_expire()
The current version of speedcheck.c may disable timeout by setting zero to Curl_expire. Which is fine using the curl_multi_perform, because it recheck all timeout internals, but when using custom event poller (like hiperfifo.c) it may keep stalle connection forever.
This commit is contained in:
parent
28d09cb0f5
commit
81ead2c4e7
1 changed files with 6 additions and 3 deletions
|
|
@ -41,12 +41,12 @@ CURLcode Curl_speedcheck(struct SessionHandle *data,
|
||||||
(Curl_tvlong(data->state.keeps_speed) != 0) &&
|
(Curl_tvlong(data->state.keeps_speed) != 0) &&
|
||||||
(data->progress.current_speed < data->set.low_speed_limit)) {
|
(data->progress.current_speed < data->set.low_speed_limit)) {
|
||||||
long howlong = Curl_tvdiff(now, data->state.keeps_speed);
|
long howlong = Curl_tvdiff(now, data->state.keeps_speed);
|
||||||
|
long nextcheck = (data->set.low_speed_time * 1000) - howlong;
|
||||||
|
|
||||||
/* We are now below the "low speed limit". If we are below it
|
/* We are now below the "low speed limit". If we are below it
|
||||||
for "low speed time" seconds we consider that enough reason
|
for "low speed time" seconds we consider that enough reason
|
||||||
to abort the download. */
|
to abort the download. */
|
||||||
|
if(nextcheck <= 0) {
|
||||||
if((howlong/1000) > data->set.low_speed_time) {
|
|
||||||
/* we have been this slow for long enough, now die */
|
/* we have been this slow for long enough, now die */
|
||||||
failf(data,
|
failf(data,
|
||||||
"Operation too slow. "
|
"Operation too slow. "
|
||||||
|
|
@ -55,7 +55,10 @@ CURLcode Curl_speedcheck(struct SessionHandle *data,
|
||||||
data->set.low_speed_time);
|
data->set.low_speed_time);
|
||||||
return CURLE_OPERATION_TIMEDOUT;
|
return CURLE_OPERATION_TIMEDOUT;
|
||||||
}
|
}
|
||||||
Curl_expire(data, howlong);
|
else {
|
||||||
|
/* wait complete low_speed_time */
|
||||||
|
Curl_expire(data, nextcheck);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* we keep up the required speed all right */
|
/* we keep up the required speed all right */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue