Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Thursday, June 13, 2019
 
 

CURLOPT_RESOLVE (3)

Name

CURLOPT_RESOLVE - provide custom host name to IP address resolves

Synopsis

#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVE,
struct curl_slist *hosts);

Description

CURLOPT_RESOLVE(3)         curl_easy_setopt options         CURLOPT_RESOLVE(3)



NAME
       CURLOPT_RESOLVE - provide custom host name to IP address resolves

SYNOPSIS
       #include <curl/curl.h>

       CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVE,
                                 struct curl_slist *hosts);

DESCRIPTION
       Pass  a  pointer  to  a  linked  list of strings with host name resolve
       information to use for requests  with  this  handle.  The  linked  list
       should  be  a  fully  valid  list of struct curl_slist structs properly
       filled  in.  Use  curl_slist_append(3)   to   create   the   list   and
       curl_slist_free_all(3) to clean up an entire list.

       Each  single  name  resolve  string  should be written using the format
       HOST:PORT:ADDRESS[,ADDRESS]... where HOST is the name libcurl will  try
       to  resolve, PORT is the port number of the service where libcurl wants
       to connect to the  HOST  and  ADDRESS  is  one  or  more  numerical  IP
       addresses.  If  you specify multiple ip addresses they need to be sepa-
       rated by comma. If libcurl is  built  to  support  IPv6,  each  of  the
       ADDRESS entries can of course be either IPv4 or IPv6 style addressing.

       This  option  effectively  pre-populates the DNS cache with entries for
       the host+port pair so redirects and everything that operations  against
       the  HOST+PORT  will  instead  use your provided ADDRESS. Addresses set
       with CURLOPT_RESOLVE(3) will not time-out from the DNS cache like ordi-
       nary entries.

       If  the  DNS  cache already have an entry for the given host+port pair,
       then this entry will be removed and a new entry will be  created.  This
       is  because  old entry may have have different addresses or be ordinary
       entries with time-outs.

       The provided ADDRESS set by this option  will  be  used  even  if  CUR-
       LOPT_IPRESOLVE(3) is set to make libcurl use another IP version.

       Remove  names  from  the  DNS cache again, to stop providing these fake
       resolves, by including a string in the linked list that uses the format
       "-HOST:PORT".  The host name must be prefixed with a dash, and the host
       name and port number must exactly match what was already  added  previ-
       ously.

       Support  for  providing  the  ADDRESS  within  [brackets]  was added in
       7.57.0.

       Support for providing multiple IP addresses  per  entry  was  added  in
       7.59.0.

DEFAULT
       NULL

PROTOCOLS
       All

EXAMPLE
       CURL *curl;
       struct curl_slist *host = NULL;
       host = curl_slist_append(NULL, "example.com:80:127.0.0.1");

       curl = curl_easy_init();
       if(curl) {
         curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
         curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");

         curl_easy_perform(curl);

         /* always cleanup */
         curl_easy_cleanup(curl);
       }

       curl_slist_free_all(host);

AVAILABILITY
       Added in 7.21.3. Removal support added in 7.42.0.

RETURN VALUE
       Returns  CURLE_OK  if the option is supported, and CURLE_UNKNOWN_OPTION
       if not.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+------------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE  |
       +---------------+------------------+
       |Availability   | web/curl         |
       +---------------+------------------+
       |Stability      | Uncommitted      |
       +---------------+------------------+
SEE ALSO
       CURLOPT_IPRESOLVE(3),    CURLOPT_DNS_CACHE_TIMEOUT(3),     CURLOPT_CON-
       NECT_TO(3),



NOTES
       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source    was    downloaded    from    https://github.com/curl/curl/ar-
       chive/curl-7_64_0.zip

       Further information about this software can be found on the open source
       community website at http://curl.haxx.se/.



libcurl 7.37.0                    19 Jun 2014               CURLOPT_RESOLVE(3)