mirror of
https://github.com/moparisthebest/curl
synced 2024-12-24 00:58:48 -05:00
curl: avoid uncessary libcurl timeouts (in parallel mode)
When curl_multi_wait() returns OK without file descriptors to wait for, it might already have done a long timeout. Closes #4159
This commit is contained in:
parent
802aa5ae27
commit
a2ab576768
@ -1972,14 +1972,17 @@ static CURLcode parallel_transfers(struct GlobalConfig *global,
|
||||
|
||||
while(!done && !mcode && still_running) {
|
||||
int numfds;
|
||||
struct timeval before = tvnow();
|
||||
long delta;
|
||||
|
||||
mcode = curl_multi_wait(multi, NULL, 0, 1000, &numfds);
|
||||
delta = tvdiff(tvnow(), before);
|
||||
|
||||
if(!mcode) {
|
||||
if(!numfds) {
|
||||
if(!numfds && (delta < 30)) {
|
||||
long sleep_ms;
|
||||
|
||||
/* If it returns without any filedescriptor instantly, we need to
|
||||
/* If it returns without any file descriptor instantly, we need to
|
||||
avoid busy-looping during periods where it has nothing particular
|
||||
to wait for */
|
||||
curl_multi_timeout(multi, &sleep_ms);
|
||||
|
Loading…
Reference in New Issue
Block a user