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:
Sara Golemon 2012-09-15 10:38:52 -07:00 committed by Daniel Stenberg
parent 9b25b00fa3
commit b78944146a
4 changed files with 19 additions and 5 deletions

View File

@ -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.

View File

@ -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()

View File

@ -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;
}

View File

@ -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();