Provided by: libcurl4-doc_8.9.1-2ubuntu2.2_all bug

NAME

       curl_easy_perform - perform a blocking network transfer

SYNOPSIS

       #include <curl/curl.h>

       CURLcode curl_easy_perform(CURL *easy_handle);

DESCRIPTION

       curl_easy_perform(3)  performs  a network transfer in a blocking manner and returns when done, or earlier
       if it fails. For non-blocking behavior, see curl_multi_perform(3).

       Invoke this function after curl_easy_init(3) and all the  curl_easy_setopt(3)  calls  are  made,  and  it
       performs  the  transfer as described in the options. It must be called with the same easy_handle as input
       as the curl_easy_init(3) call returned.

       You can do any amount of calls to curl_easy_perform(3) while using the same easy_handle. If you intend to
       transfer  more  than  one  file,  you  are  even  encouraged to do so. libcurl attempts to reuse existing
       connections for the following transfers, thus making the operations faster, less CPU  intense  and  using
       less  network  resources. You probably want to use curl_easy_setopt(3) between the invokes to set options
       for the following curl_easy_perform(3) call.

       You must never call this function simultaneously from two places using  the  same  easy_handle.  Let  the
       function  return  first  before  invoking  it  another time. If you want parallel transfers, you must use
       several curl easy_handles.

       A network transfer moves data to a peer or from a peer. An application tells libcurl how to receive  data
       by  setting  the  CURLOPT_WRITEFUNCTION(3) and CURLOPT_WRITEDATA(3) options. To tell libcurl what data to
       send,  there  are  a  few  more  alternatives  but  two  common  ones  are  CURLOPT_READFUNCTION(3)   and
       CURLOPT_POSTFIELDS(3).

       While the easy_handle is added to a multi handle, it cannot be used by curl_easy_perform(3).

PROTOCOLS

       This functionality affects all supported protocols

EXAMPLE

       int main(void)
       {
         CURL *curl = curl_easy_init();
         if(curl) {
           CURLcode res;
           curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
           res = curl_easy_perform(curl);
           curl_easy_cleanup(curl);
         }
       }

AVAILABILITY

       Added in curl 7.1

RETURN VALUE

       CURLE_OK  (0)  means  everything  was OK, non-zero means an error occurred as <curl/curl.h> defines - see
       libcurl-errors(3). If CURLOPT_ERRORBUFFER(3) was set with curl_easy_setopt(3) there is an  error  message
       stored in the error buffer when non-zero is returned.

SEE ALSO

       curl_easy_init(3),   curl_easy_setopt(3),   curl_multi_add_handle(3),   curl_multi_perform(3),   libcurl-
       errors(3)