diff --git a/docs/examples/externalsocket.c b/docs/examples/externalsocket.c index 80e6598fa..9adb0dc4f 100644 --- a/docs/examples/externalsocket.c +++ b/docs/examples/externalsocket.c @@ -58,6 +58,13 @@ static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream) return written; } +static int closesocket(void *clientp, curl_socket_t item) +{ + (void)clientp; + printf("libcurl wants to close %d now\n", (int)item); + return 0; +} + static curl_socket_t opensocket(void *clientp, curlsocktype purpose, struct curl_sockaddr *address) @@ -137,6 +144,10 @@ int main(void) curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket); curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd); + /* call this function to close sockets */ + curl_easy_setopt(curl, CURLOPT_CLOSESOCKETFUNCTION, closesocket); + curl_easy_setopt(curl, CURLOPT_CLOSESOCKETDATA, &sockfd); + /* call this function to set options for the socket */ curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);