diff options
author | Alessandro Ghedini <ghedo@debian.org> | 2017-08-12 12:27:23 +0100 |
---|---|---|
committer | Alessandro Ghedini <ghedo@debian.org> | 2017-08-12 12:27:23 +0100 |
commit | bdd033d6e4a13df5b45f2628db5738f82ca6b413 (patch) | |
tree | cf888efddf7f3cf7dd714363ca0f477f2a59b4c6 /docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 | |
parent | d4e5ed3bd25935c7dc74a5fd183032d7649d2db8 (diff) |
New upstream version 7.55.0
Diffstat (limited to 'docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3')
-rw-r--r-- | docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 index 6262dc59..00eb624e 100644 --- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 +++ b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. +.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -20,7 +20,8 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKOPTFUNCTION 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" +.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.55.0" "curl_easy_setopt options" + .SH NAME CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options .SH SYNOPSIS @@ -78,7 +79,43 @@ By default, this callback is NULL and unused. .SH PROTOCOLS All .SH EXAMPLE -TODO +.nf +/* make libcurl use the already established socket 'sockfd' */ + +static curl_socket_t opensocket(void *clientp, + curlsocktype purpose, + struct curl_sockaddr *address) +{ + curl_socket_t sockfd; + sockfd = *(curl_socket_t *)clientp; + /* the actual externally set socket is passed in via the OPENSOCKETDATA + option */ + return sockfd; +} + +static int sockopt_callback(void *clientp, curl_socket_t curlfd, + curlsocktype purpose) +{ + /* This return code was added in libcurl 7.21.5 */ + return CURL_SOCKOPT_ALREADY_CONNECTED; +} + +curl = curl_easy_init(); +if(curl) { + /* libcurl will internally think that you connect to the host + * and port that you specify in the URL option. */ + curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999"); + /* call this function to get a socket */ + curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket); + curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd); + + /* call this function to set options for the socket */ + curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); + + res = curl_easy_perform(curl); + + curl_easy_cleanup(curl); +.fi .SH AVAILABILITY Added in 7.16.0. The \fICURL_SOCKOPT_ALREADY_CONNECTED\fP return code was added in 7.21.5. |