trusty (3) curl_multi_setopt.3.gz

Provided by: libcurl4-doc_7.35.0-1ubuntu2.20_all bug

NAME

       curl_multi_setopt - set options for a curl multi handle

SYNOPSIS

       #include <curl/curl.h>

       CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param);

DESCRIPTION

       curl_multi_setopt()  is  used  to  tell  a  libcurl  multi handle how to behave. By using the appropriate
       options to curl_multi_setopt(3), you can change libcurl's behaviour when using that  multi  handle.   All
       options are set with the option followed by the parameter param. That parameter can be a long, a function
       pointer, an object pointer or a curl_off_t type, depending on what the specific option expects. Read this
       manual  carefully  as bad input values may cause libcurl to behave badly!  You can only set one option in
       each function call.

OPTIONS

       CURLMOPT_SOCKETFUNCTION
              Pass   a   pointer   to   a   function   matching   the   curl_socket_callback   prototype.    The
              curl_multi_socket_action(3)  function  informs  the  application about updates in the socket (file
              descriptor) status by doing none, one, or multiple calls to the curl_socket_callback given in  the
              param argument. They update the status with changes since the previous time a curl_multi_socket(3)
              function was called. If the given callback pointer is NULL, no callback will be  called.  Set  the
              callback's  userp  argument  with CURLMOPT_SOCKETDATA.  See curl_multi_socket(3) for more callback
              details.

       CURLMOPT_SOCKETDATA
              Pass a pointer to whatever you want passed to  the  curl_socket_callback's  fourth  argument,  the
              userp  pointer.  This  is not used by libcurl but only passed-thru as-is. Set the callback pointer
              with CURLMOPT_SOCKETFUNCTION.

       CURLMOPT_PIPELINING
              Pass a long set to 1 to enable or 0 to disable. Enabling pipelining on a multi handle will make it
              attempt  to perform HTTP Pipelining as far as possible for transfers using this handle. This means
              that if you add a second request that can use an already existing connection, the  second  request
              will be "piped" on the same connection rather than being executed in parallel. (Added in 7.16.0)

       CURLMOPT_TIMERFUNCTION
              Pass   a   pointer   to   a   function   matching  the  curl_multi_timer_callback  prototype:  int
              curl_multi_timer_callback(CURLM  *multi  /*  multi  handle  */,  long  timeout_ms  /*  timeout  in
              milliseconds */, void *userp /* TIMERDATA */).  This function will then be called when the timeout
              value changes. The timeout value is at what latest time the application should  call  one  of  the
              "performing"    functions    of    the    multi    interface    (curl_multi_socket_action(3)   and
              curl_multi_perform(3)) - to allow libcurl to keep timeouts and retries  etc  to  work.  A  timeout
              value  of  -1  means  that  there  is  no  timeout at all, and 0 means that the timeout is already
              reached. Libcurl attempts to limit calling this only when the fixed future timeout  time  actually
              changes.  See  also  CURLMOPT_TIMERDATA. The callback should return 0 on success, and -1 on error.
              This callback can be used instead of, or in addition to, curl_multi_timeout(3). (Added in 7.16.0)

       CURLMOPT_TIMERDATA
              Pass a pointer to whatever you want passed to the curl_multi_timer_callback's third argument,  the
              userp  pointer.   This is not used by libcurl but only passed-thru as-is. Set the callback pointer
              with CURLMOPT_TIMERFUNCTION. (Added in 7.16.0)

       CURLMOPT_MAXCONNECTS
              Pass a long. The set number will be used as the maximum amount of simultaneously open  connections
              that  libcurl  may  cache.  Default  is  10, and libcurl will enlarge the size for each added easy
              handle to make it fit 4 times the number of added easy handles.

              By setting this option, you can prevent the cache size from growing beyond the limit set by you.

              When the cache is full, curl closes the oldest one in the cache to  prevent  the  number  of  open
              connections from increasing.

              This  option  is for the multi handle's use only, when using the easy interface you should instead
              use the CURLOPT_MAXCONNECTS option.

              (Added in 7.16.3)

       CURLMOPT_MAX_HOST_CONNECTIONS
              Pass a long. The set number will be used as the maximum amount of simultaneously open  connections
              to  a  single  host.  For each new session to a host, libcurl will open a new connection up to the
              limit set by CURLMOPT_MAX_HOST_CONNECTIONS. When the  limit  is  reached,  the  sessions  will  be
              pending  until  there  are available connections. If CURLMOPT_PIPELINING is 1, libcurl will try to
              pipeline if the host is capable of it.

              The default value is 0, which means that there is no limit.  However, for backwards compatibility,
              setting  it  to  0 when CURLMOPT_PIPELINING is 1 will not be treated as unlimited. Instead it will
              open only 1 connection and try to pipeline on it.

              (Added in 7.30.0)

       CURLMOPT_MAX_PIPELINE_LENGTH
              Pass a long. The set number will be used  as  the  maximum  amount  of  requests  in  a  pipelined
              connection.  When this limit is reached, libcurl will use another connection to the same host (see
              CURLMOPT_MAX_HOST_CONNECTIONS), or queue the requests until one of the pipelines to  the  host  is
              ready   to   accept   a   request.    Thus,   the   total   number   of   requests   in-flight  is
              CURLMOPT_MAX_HOST_CONNECTIONS * CURLMOPT_MAX_PIPELINE_LENGTH.  The default value is 5.

              (Added in 7.30.0)

       CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
              Pass a long. If a pipelined connection is currently processing a  request  with  a  Content-Length
              larger  than  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE,  that  connection  will  not be considered for
              additional requests, even if it is shorter than CURLMOPT_MAX_PIPELINE_LENGTH.  The  default  value
              is 0, which means that the penalization is inactive.

              (Added in 7.30.0)

       CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
              Pass  a  long.  If  a  pipelined  connection is currently processing a chunked (Transfer-encoding:
              chunked) request with a current chunk length larger than CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE,  that
              connection  will  not  be  considered  for  additional  requests,  even  if  it  is  shorter  than
              CURLMOPT_MAX_PIPELINE_LENGTH.  The default value is  0,  which  means  that  the  penalization  is
              inactive.

              (Added in 7.30.0)

       CURLMOPT_PIPELINING_SITE_BL
              Pass  an  array  of  char  *,  ending with NULL. This is a list of sites that are blacklisted from
              pipelining, i.e sites that are known to not support  HTTP  pipelining.  The  array  is  copied  by
              libcurl.

              The default value is NULL, which means that there is no blacklist.

              Pass a NULL pointer to clear the blacklist.

              Example:

                site_blacklist[] =
                {
                  "www.haxx.se",
                  "www.example.com:1234",
                  NULL
                };

                curl_multi_setopt(m, CURLMOPT_PIPELINE_SITE_BL, site_blacklist);

              (Added in 7.30.0)

       CURLMOPT_PIPELINING_SERVER_BL
              Pass an array of char *, ending with NULL. This is a list of server types prefixes (in the Server:
              HTTP header) that are blacklisted from pipelining, i.e server types that are known to not  support
              HTTP pipelining. The array is copied by libcurl.

              Note  that  the  comparison matches if the Server: header begins with the string in the blacklist,
              i.e "Server: Ninja 1.2.3" and "Server: Ninja 1.4.0" can both be blacklisted by having  "Ninja"  in
              the backlist.

              The default value is NULL, which means that there is no blacklist.

              Pass a NULL pointer to clear the blacklist.

              Example:

                server_blacklist[] =
                {
                  "Microsoft-IIS/6.0",
                  "nginx/0.8.54",
                  NULL
                };

                curl_multi_setopt(m, CURLMOPT_PIPELINE_SERVER_BL, server_blacklist);

              (Added in 7.30.0)

       CURLMOPT_MAX_TOTAL_CONNECTIONS
              Pass  a long. The set number will be used as the maximum amount of simultaneously open connections
              in total. For each new session, libcurl will open  a  new  connection  up  to  the  limit  set  by
              CURLMOPT_MAX_TOTAL_CONNECTIONS.  When  the  limit  is  reached, the sessions will be pending until
              there are available connections. If CURLMOPT_PIPELINING is 1, libcurl will try to pipeline if  the
              host is capable of it.

              The default value is 0, which means that there is no limit.  However, for backwards compatibility,
              setting it to 0 when CURLMOPT_PIPELINING is 1 will not be treated as unlimited.  Instead  it  will
              open only 1 connection and try to pipeline on it.

              (Added in 7.30.0)

RETURNS

       The  standard  CURLMcode  for multi interface error codes. Note that it returns a CURLM_UNKNOWN_OPTION if
       you try setting an option that this version of libcurl doesn't know of.

AVAILABILITY

       This function was added in libcurl 7.15.4.

SEE ALSO

       curl_multi_cleanup(3), curl_multi_init(3), curl_multi_socket(3), curl_multi_info_read(3)