diff options
Diffstat (limited to 'docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3')
-rw-r--r-- | docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 deleted file mode 100644 index 107d68a6a..000000000 --- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 +++ /dev/null @@ -1,127 +0,0 @@ -.\" ************************************************************************** -.\" * _ _ ____ _ -.\" * Project ___| | | | _ \| | -.\" * / __| | | | |_) | | -.\" * | (__| |_| | _ <| |___ -.\" * \___|\___/|_| \_\_____| -.\" * -.\" * Copyright (C) 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 -.\" * are also available at https://curl.se/docs/copyright.html. -.\" * -.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell -.\" * copies of the Software, and permit persons to whom the Software is -.\" * furnished to do so, under the terms of the COPYING file. -.\" * -.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -.\" * KIND, either express or implied. -.\" * -.\" * SPDX-License-Identifier: curl -.\" * -.\" ************************************************************************** -.\" -.TH CURLOPT_SOCKOPTFUNCTION 3 "16 Jun 2014" libcurl libcurl -.SH NAME -CURLOPT_SOCKOPTFUNCTION \- callback for setting socket options -.SH SYNOPSIS -.nf -#include <curl/curl.h> - -typedef enum { - CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */ - CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */ - CURLSOCKTYPE_LAST /* never use */ -} curlsocktype; - -#define CURL_SOCKOPT_OK 0 -#define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return - CURLE_ABORTED_BY_CALLBACK */ -#define CURL_SOCKOPT_ALREADY_CONNECTED 2 - -int sockopt_callback(void *clientp, - curl_socket_t curlfd, - curlsocktype purpose); - -CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); -.SH DESCRIPTION -Pass a pointer to your callback function, which should match the prototype -shown above. - -When set, this callback function gets called by libcurl when the socket has -been created, but before the connect call to allow applications to change -specific socket options. The callback's \fIpurpose\fP argument identifies the -exact purpose for this particular socket: - -\fICURLSOCKTYPE_IPCXN\fP for actively created connections or since 7.28.0 -\fICURLSOCKTYPE_ACCEPT\fP for FTP when the connection was setup with PORT/EPSV -(in earlier versions these sockets were not passed to this callback). - -Future versions of libcurl may support more purposes. libcurl passes the newly -created socket descriptor to the callback in the \fIcurlfd\fP parameter so -additional setsockopt() calls can be done at the user's discretion. - -The \fIclientp\fP pointer contains whatever user-defined value set using the -\fICURLOPT_SOCKOPTDATA(3)\fP function. - -Return \fICURL_SOCKOPT_OK\fP from the callback on success. Return -\fICURL_SOCKOPT_ERROR\fP from the callback function to signal an unrecoverable -error to the library and it closes the socket and returns -\fICURLE_COULDNT_CONNECT\fP. Alternatively, the callback function can return -\fICURL_SOCKOPT_ALREADY_CONNECTED\fP, to tell libcurl that the socket is -already connected and then libcurl does no attempt to connect. This allows an -application to pass in an already connected socket with -\fICURLOPT_OPENSOCKETFUNCTION(3)\fP and then have this function make libcurl -not attempt to connect (again). -.SH DEFAULT -By default, this callback is NULL and unused. -.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 thinks 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. -.SH RETURN VALUE -Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not. -.SH "SEE ALSO" -.BR CURLOPT_OPENSOCKETFUNCTION (3), -.BR CURLOPT_SEEKFUNCTION (3), -.BR CURLOPT_SOCKOPTDATA (3) |