| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- .\" generated by cd2nroff 0.1 from CURLOPT_CLOSESOCKETFUNCTION.md
- .TH CURLOPT_CLOSESOCKETFUNCTION 3 "2025-01-17" libcurl
- .SH NAME
- CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement
- .SH SYNOPSIS
- .nf
- #include <curl/curl.h>
- int closesocket_callback(void *clientp, curl_socket_t item);
- CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETFUNCTION,
- closesocket_callback);
- .fi
- .SH DESCRIPTION
- Pass a pointer to your callback function, which should match the prototype
- shown above.
- This callback function gets called by libcurl instead of the \fIclose(3)\fP or
- \fIclosesocket(3)\fP call when sockets are closed (not for any other file
- descriptors). This is pretty much the reverse to the
- \fICURLOPT_OPENSOCKETFUNCTION(3)\fP option. Return 0 to signal success and 1
- if there was an error.
- The \fIclientp\fP pointer is set with
- \fICURLOPT_CLOSESOCKETDATA(3)\fP. \fIitem\fP is the socket libcurl wants to be
- closed.
- .SH DEFAULT
- Use the standard socket close function.
- .SH PROTOCOLS
- This functionality affects all supported protocols
- .SH EXAMPLE
- .nf
- 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);
- }
- .fi
- .SH AVAILABILITY
- Added in curl 7.21.7
- .SH RETURN VALUE
- Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
- .SH SEE ALSO
- .BR CURLOPT_CLOSESOCKETDATA (3),
- .BR CURLOPT_OPENSOCKETFUNCTION (3)
|