curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.md
Daniel Stenberg e3fe020089
docs/libcurl: generate PROTOCOLS from meta-data
Remove the PROTOCOLS section from the source files completely and
instead generate them based on the header data in the curldown files.

It also generates TLS backend information for options marked for TLS as
protocol.

Closes #13175
2024-03-23 18:13:03 +01:00

1.4 KiB

c SPDX-License-Identifier Title Section Source See-also Protocol
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. curl CURLMOPT_SOCKETDATA 3 libcurl
CURLMOPT_SOCKETFUNCTION (3)
CURLMOPT_TIMERFUNCTION (3)
curl_multi_socket_action (3)
All

NAME

CURLMOPT_SOCKETDATA - custom pointer passed to the socket callback

SYNOPSIS

#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);

DESCRIPTION

A data pointer to pass to the socket callback set with the CURLMOPT_SOCKETFUNCTION(3) option.

This pointer is not touched by libcurl but is only passed in as the socket callback's clientp argument.

DEFAULT

NULL

EXAMPLE

struct priv {
  void *ours;
};

static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
{
  struct priv *p = sockp;
  printf("my ptr: %p\n", p->ours);

  if(what == CURL_POLL_REMOVE) {
    /* remove the socket from our collection */
  }
  if(what & CURL_POLL_IN) {
    /* wait for read on this socket */
  }
  if(what & CURL_POLL_OUT) {
    /* wait for write on this socket */
  }

  return 0;
}

int main(void)
{
  struct priv setup;
  CURLM *multi = curl_multi_init();
  /* ... use socket callback and custom pointer */
  curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
  curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &setup);
}

AVAILABILITY

Added in 7.15.4

RETURN VALUE

Returns CURLM_OK.