Provided by: libcurl4-doc_7.81.0-1ubuntu1.19_all bug

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 will be passed  to  all  future  socket  callbacks  for  the
       specific sockfd socket.

       If the given sockfd is not already in use by libcurl, this function will return an error.

       libcurl  only  keeps one single pointer associated with a socket, so calling this function
       several times for the same socket will make 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 will need and then libcurl can just as
       well do it since it already has an internal hash table lookup for this.

EXAMPLE

        /* make our struct pointer associated with socket fd */
        mc = curl_multi_assign(multi_handle, fd, ourstructp);

AVAILABILITY

       Added in 7.15.5

RETURN VALUE

       The standard CURLMcode for multi interface error codes.

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.

SEE ALSO

       curl_multi_setopt(3), curl_multi_socket_action(3)