dwww Home | Manual pages | Find package

curl_multi_assign(3)        Library Functions Manual       curl_multi_assign(3)

NAME
       curl_multi_assign - set data to associate with an internal socket

SYNOPSIS
       #include <curl/curl.h>

       CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,
                                   void *sockptr);

DESCRIPTION
       This  function  creates  an  association in the multi handle between the
       given socket and a private pointer of the application. This is  designed
       for curl_multi_socket_action(3) uses.

       When  set,  the sockptr pointer is passed to all future socket callbacks
       for the specific sockfd socket.

       If the given sockfd is not already in use by libcurl, this function  re-
       turns an error.

       libcurl only keeps one single pointer associated with a socket, so call-
       ing  this  function several times for the same socket makes the last set
       pointer get used.

       The idea here being that this association (socket to private pointer) is
       something that just about every application that uses this API needs and
       then libcurl can just as well do it since it already has  the  necessary
       functionality.

       It  is  acceptable  to call this function from your multi callback func-
       tions.

PROTOCOLS
       This functionality affects all supported protocols

EXAMPLE
       int main(void)
       {
         CURLM *multi = curl_multi_init();
         int private = 123;
         curl_socket_t fd = 0; /* file descriptor to associate our data with */

         /* make our struct pointer associated with socket fd */
         CURLMcode mc = curl_multi_assign(multi, fd, &private);
         if(mc)
           printf("error: %s\n", curl_multi_strerror(mc));
       }

TYPICAL USAGE
       In a typical application you allocate a struct or at least use some kind
       of semi-dynamic data for each socket that we must  wait  for  action  on
       when using the curl_multi_socket_action(3) approach.

       When our socket-callback gets called by libcurl and we get to know about
       yet another socket to wait for, we can use curl_multi_assign(3) to point
       out  the  particular  data  so  that when we get updates about this same
       socket again, we do not have to find the  struct  associated  with  this
       socket by ourselves.

AVAILABILITY
       Added in curl 7.15.5

RETURN VALUE
       This function returns a CURLMcode indicating success or error.

       CURLM_OK  (0) means everything was OK, non-zero means an error occurred,
       see libcurl-errors(3).

SEE ALSO
       curl_multi_setopt(3), curl_multi_socket_action(3)

libcurl                            2026-07-12              curl_multi_assign(3)

Generated by dwww version 1.16 on Sat Oct 3 07:40:46 CEST 2026.