mirror of
https://github.com/moparisthebest/curl
synced 2024-11-04 16:45:06 -05:00
curl_multi_wait: call getsock before figuring out timeout
.... since getsock may update the expiry timer. Fixes #2996 Closes #3000
This commit is contained in:
parent
ef38059f7e
commit
ec5d0991cc
14
lib/multi.c
14
lib/multi.c
@ -1010,13 +1010,6 @@ CURLMcode curl_multi_wait(struct Curl_multi *multi,
|
||||
if(multi->in_callback)
|
||||
return CURLM_RECURSIVE_API_CALL;
|
||||
|
||||
/* If the internally desired timeout is actually shorter than requested from
|
||||
the outside, then use the shorter time! But only if the internal timer
|
||||
is actually larger than -1! */
|
||||
(void)multi_timeout(multi, &timeout_internal);
|
||||
if((timeout_internal >= 0) && (timeout_internal < (long)timeout_ms))
|
||||
timeout_ms = (int)timeout_internal;
|
||||
|
||||
/* Count up how many fds we have from the multi handle */
|
||||
data = multi->easyp;
|
||||
while(data) {
|
||||
@ -1041,6 +1034,13 @@ CURLMcode curl_multi_wait(struct Curl_multi *multi,
|
||||
data = data->next; /* check next handle */
|
||||
}
|
||||
|
||||
/* If the internally desired timeout is actually shorter than requested from
|
||||
the outside, then use the shorter time! But only if the internal timer
|
||||
is actually larger than -1! */
|
||||
(void)multi_timeout(multi, &timeout_internal);
|
||||
if((timeout_internal >= 0) && (timeout_internal < (long)timeout_ms))
|
||||
timeout_ms = (int)timeout_internal;
|
||||
|
||||
curlfds = nfds; /* number of internal file descriptors */
|
||||
nfds += extra_nfds; /* add the externally provided ones */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user