aboutsummaryrefslogtreecommitdiff
path: root/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2017-05-15 11:45:19 +0200
committerDaniel Stenberg <daniel@haxx.se>2017-05-15 11:45:19 +0200
commit5ddad099b42b505a9449738db124ed6b1389afc1 (patch)
treea8a9896c3212fd8565cb86a622df57dc61c0a29d /docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
parente366ca2b85a78a0ad8d663534bd462e61ad407b5 (diff)
docs/libcurl/opts: added more examples in man pages
Diffstat (limited to 'docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3')
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.339
1 files changed, 38 insertions, 1 deletions
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
index 314e0c4ab..d57e24a3f 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.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
@@ -81,6 +81,43 @@ The default behavior is the equivalent of this:
.SH PROTOCOLS
All
.SH EXAMPLE
+.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.17.1.
.SH RETURN VALUE