mirror of
https://github.com/curl/curl.git
synced 2024-11-21 01:16:58 +08:00
curl_multi_wait: Add parameter to return number of active sockets
Minor change to recently introduced function. BC breaking, but since curl_multi_wait() doesn't exist in any releases that should be fine.
This commit is contained in:
parent
9b25b00fa3
commit
b78944146a
@ -29,7 +29,8 @@ curl_multi_select - polls on all easy handles in a multi handle
|
||||
CURLMcode curl_multi_wait(CURLM *multi_handle,
|
||||
struct curl_waitfd extra_fds[],
|
||||
unsigned int extra_nfds,
|
||||
int timeout_ms);
|
||||
int timeout_ms,
|
||||
int *ret);
|
||||
.ad
|
||||
.SH DESCRIPTION
|
||||
This function polls on all file descriptors used by the curl easy handles
|
||||
@ -39,6 +40,9 @@ detected on at least one of the handles or \fItimeout_ms\fP has passed.
|
||||
The calling application may pass additional curl_waitfd structures which are
|
||||
similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.
|
||||
|
||||
On completion, if \fIret\fI is supplied, it will be populated with the
|
||||
number of file descriptors on which interesting events occured.
|
||||
|
||||
This function is encouraged to be used instead of select(3) when using the
|
||||
multi interface to allow applications to easier circumvent the common problem
|
||||
with 1024 maximum file descriptors.
|
||||
|
@ -157,7 +157,8 @@ CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
|
||||
CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
|
||||
struct curl_waitfd extra_fds[],
|
||||
unsigned int extra_nfds,
|
||||
int timeout_ms);
|
||||
int timeout_ms,
|
||||
int *ret);
|
||||
|
||||
/*
|
||||
* Name: curl_multi_perform()
|
||||
|
@ -944,7 +944,8 @@ CURLMcode curl_multi_fdset(CURLM *multi_handle,
|
||||
CURLMcode curl_multi_wait(CURLM *multi_handle,
|
||||
struct curl_waitfd extra_fds[],
|
||||
unsigned int extra_nfds,
|
||||
int timeout_ms)
|
||||
int timeout_ms,
|
||||
int *ret)
|
||||
{
|
||||
struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
|
||||
struct Curl_one_easy *easy;
|
||||
@ -1023,8 +1024,10 @@ CURLMcode curl_multi_wait(CURLM *multi_handle,
|
||||
}
|
||||
|
||||
/* wait... */
|
||||
Curl_poll(ufds, nfds, timeout_ms);
|
||||
i = Curl_poll(ufds, nfds, timeout_ms);
|
||||
free(ufds);
|
||||
if(ret)
|
||||
*ret = i;
|
||||
return CURLM_OK;
|
||||
}
|
||||
|
||||
|
@ -54,12 +54,18 @@ int test(char *URL)
|
||||
abort_on_test_timeout();
|
||||
|
||||
while(still_running) {
|
||||
res = curl_multi_wait(multi, NULL, 0, TEST_HANG_TIMEOUT);
|
||||
int num;
|
||||
res = curl_multi_wait(multi, NULL, 0, TEST_HANG_TIMEOUT, &num);
|
||||
if (res != CURLM_OK) {
|
||||
printf("curl_multi_wait() returned %d\n", res);
|
||||
res = -1;
|
||||
goto test_cleanup;
|
||||
}
|
||||
if (num != 1) {
|
||||
printf("curl_multi_wait() returned on %d handle(s), expected 1\n", num);
|
||||
res = -1;
|
||||
goto test_cleanup;
|
||||
}
|
||||
|
||||
abort_on_test_timeout();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user