| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | .\" **************************************************************************.\" *                                  _   _ ____  _.\" *  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_OPENSOCKETDATA 3 "January 02, 2023" "libcurl 7.88.1" "curl_easy_setopt options".SH NAMECURLOPT_OPENSOCKETDATA \- pointer passed to open socket callback.SH SYNOPSIS.nf#include <curl/curl.h>CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);.fi.SH DESCRIPTIONPass a \fIpointer\fP that will be untouched by libcurl and passed as the firstargument in the open socket callback set with\fICURLOPT_OPENSOCKETFUNCTION(3)\fP..SH DEFAULTThe default value of this parameter is NULL..SH PROTOCOLSAll.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 AVAILABILITYAdded in 7.17.1.SH RETURN VALUEReturns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not..SH "SEE ALSO".BR CURLOPT_OPENSOCKETFUNCTION "(3), " CURLOPT_SOCKOPTFUNCTION "(3), "
 |