Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
curl_multi_wait(3)	    Library Functions Manual	      curl_multi_wait(3)

NAME
     curl_multi_wait - poll on all easy handles in a multi handle

SYNOPSIS
     #include <curl/curl.h>

     CURLMcode curl_multi_wait(CURLM *multi_handle,
			       struct curl_waitfd extra_fds[],
			       unsigned int extra_nfds,
			       int timeout_ms,
			       int *numfds);

DESCRIPTION
     curl_multi_wait(3) polls all file descriptors used by the curl easy handles
     contained	in  the  given multi handle set. It blocks until activity is de-
     tected on at least one of the handles or timeout_ms has  passed.	Alterna-
     tively,  if  the  multi  handle  has  a pending internal timeout that has a
     shorter expiry time than timeout_ms, that shorter time is	being  used  in-
     stead to make sure timeout accuracy is reasonably kept.

     The  calling  application	may pass additional curl_waitfd structures which
     are similar to poll(2)'s pollfd structure to be waited on in the same call.

     On completion, if numfds is non-NULL, it gets populated with the total num-
     ber of file descriptors on which interesting events occurred.  This  number
     can  include  both libcurl internal descriptors as well as descriptors pro-
     vided in extra_fds.

     If no extra file descriptors are provided and libcurl has no file	descrip-
     tor  to offer to wait for, this function returns immediately. (Consider us-
     ing curl_multi_poll(3) to avoid this behavior.)

     This function is encouraged to be used instead of select(3) when using  the
     multi interface to allow applications to easier circumvent the common prob-
     lem with 1024 maximum file descriptors.

curl_waitfd
     struct curl_waitfd {
       curl_socket_t fd;
       short events;
       short revents;
     };

     CURL_WAIT_POLLIN
	    Bit  flag to curl_waitfd.events indicating the socket should poll on
	    read events such as new data received.

     CURL_WAIT_POLLPRI
	    Bit flag to curl_waitfd.events indicating the socket should poll  on
	    high priority read events such as out of band data.

     CURL_WAIT_POLLOUT
	    Bit  flag to curl_waitfd.events indicating the socket should poll on
	    write events such as the socket being clear to write without  block-
	    ing.

PROTOCOLS
     This functionality affects all supported protocols

EXAMPLE
     int main(void)
     {
       CURL *easy;
       CURLM *multi = curl_multi_init();
       int still_running;

       easy = curl_easy_init();

       /* add the individual easy handle */
       curl_multi_add_handle(multi, easy);

       do {
	 CURLMcode mresult;
	 int numfds;

	 mresult = curl_multi_perform(multi, &still_running);

	 if(mresult == CURLM_OK) {
	   /* wait for activity, timeout or "nothing" */
	   mresult = curl_multi_wait(multi, NULL, 0, 1000, &numfds);
	 }

	 if(mresult != CURLM_OK) {
	   fprintf(stderr, "curl_multi failed, code %d.\n", mresult);
	   break;
	 }

       } while(still_running);

       curl_multi_remove_handle(multi, easy);
     }

AVAILABILITY
     Added in curl 7.28.0

RETURN VALUE
     This function returns a CURLMcode indicating success or error.

     CURLM_OK (0) means everything was OK, non-zero means an error occurred, see
     libcurl-errors(3).

SEE ALSO
     curl_multi_fdset(3), curl_multi_perform(3), curl_multi_poll(3)

libcurl 			   2026-06-11		      curl_multi_wait(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=curl_multi_wait&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help