curl / libcurl / API / curl_easy_setopt / CURLOPT_CLOSESOCKETDATA

CURLOPT_CLOSESOCKETDATA explained

Name

CURLOPT_CLOSESOCKETDATA - pointer passed to the socket close callback

Synopsis

 #include <curl/curl.h>   CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA,   void *pointer); 

Description

Pass a pointer that remains untouched by libcurl and passed as the first argument in the closesocket callback set with CURLOPT_CLOSESOCKETFUNCTION.

Note that when using multi/share handles, your callback may get invoked even after the easy handle has been cleaned up. The callback and data is inherited by a new connection and that connection may live longer than the transfer itself in the multi/share handle's connection cache.

Default

NULL

Protocols

This functionality affects all supported protocols

Example

 struct priv {   void *custom; };   static int closesocket(void *clientp, curl_socket_t item) {   struct priv *my = clientp;   printf("our ptr: %p\n", my->custom);     printf("libcurl wants to close %d now\n", (int)item);   return 0; }   int main(void) {   struct priv myown;   CURL *curl = curl_easy_init();     /* call this function to close sockets */   curl_easy_setopt(curl, CURLOPT_CLOSESOCKETFUNCTION, closesocket);   curl_easy_setopt(curl, CURLOPT_CLOSESOCKETDATA, &myown);     curl_easy_perform(curl);   curl_easy_cleanup(curl); } 

Availability

Added in curl 7.21.7

Return value

curl_easy_setopt returns a CURLcode indicating success or error.

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

See also

CURLOPT_CLOSESOCKETFUNCTION(3), CURLOPT_OPENSOCKETFUNCTION(3)

This HTML page was made with roffit.