21
20
otherwise remove any others. The \fIcurl_multi_perform(3)\fP function should be
22
21
called as soon as one of them is ready to be read from or written to.
23
To be sure to have up-to-date results, you should call
24
\fIcurl_multi_perform\fP until it does not return CURLM_CALL_MULTI_PERFORM
25
prior to calling \fIcurl_multi_fdset\fP. This will make sure that libcurl has
26
updated the handles' socket states.
24
28
If no file descriptors are set by libcurl, \fImax_fd\fP will contain -1 when
25
29
this function returns. Otherwise it will contain the higher descriptor number
28
You should also be aware that when doing select(), you should consider using a
29
rather small (single-digit number of seconds) timeout and call
30
\fIcurl_multi_perform\fP regularly - even if no activity has been seen on the
31
fd_sets - as otherwise libcurl-internal retries and timeouts may not work as
34
Starting with libcurl 7.16.0, you should use \fBcurl_multi_timeout\fP to
35
figure out how long to wait for action.
32
When doing select(), you should use \fBcurl_multi_timeout\fP to figure out how
33
long to wait for action. Call \fIcurl_multi_perform\fP even if no activity has
34
been seen on the fd_sets after the timeout expires as otherwise internal
35
retries and timeouts may not work as you'd think and want.
37
37
CURLMcode type, general libcurl multi interface error code. See
38
38
\fIlibcurl-errors(3)\fP
40
.BR curl_multi_cleanup "(3)," curl_multi_init "(3), "
41
.BR curl_multi_timeout "(3) "
40
.BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
41
.BR curl_multi_timeout "(3), " curl_multi_perform "(3) "