CURLOPT_CL...KETFUNCTION(3) Library Functions ManualCURLOPT_CL...KETFUNCTION(3)
NAME
CURLOPT_CLOSESOCKETFUNCTION - callback to socket close replacement
SYNOPSIS
#include <curl/curl.h>
int closesocket_callback(void *clientp, curl_socket_t item);
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETFUNCTION,
closesocket_callback);
DESCRIPTION
Pass a pointer to your callback function, which should match the proto-
type shown above.
This callback function gets called by libcurl instead of the close(3) or
closesocket(3) call when sockets are closed (not for any other file de-
scriptors). This is pretty much the reverse to the CURLOPT_OPENSOCKET-
FUNCTION(3) option. Return 0 to signal success and 1 if there was an er-
ror.
The clientp pointer is set with CURLOPT_CLOSESOCKETDATA(3). item is the
socket libcurl wants to be closed.
DEFAULT
Use the standard socket close function.
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(3) returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error occurred,
see libcurl-errors(3).
SEE ALSO
CURLOPT_CLOSESOCKETDATA(3), CURLOPT_OPENSOCKETFUNCTION(3)
libcurl 2026-07-12 CURLOPT_CL...KETFUNCTION(3)
Generated by dwww version 1.16 on Fri Oct 2 17:13:36 CEST 2026.