summaryrefslogtreecommitdiff
path: root/lib/README.hostip
blob: 8901871874130a68a32b9c3772b0bcf40537f11a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 curl_hostip.c explained
 ==================

 The main COMPILE-TIME DEFINES to keep in mind when reading the curl_host*.c
 source file are these:

 CURLRES_IPV6 - this host has getaddrinfo() and family, and thus we use
 that. The host may not be able to resolve IPv6, but we don't really have to
 take that into account. Hosts that aren't IPv6-enabled have CURLRES_IPV4
 defined.

 CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
 name resolves. It cannot have ENABLE_IPV6 defined at the same time, as c-ares
 has no ipv6 support. This can be Windows or *nix.

 CURLRES_THREADED - is defined if libcurl is built to run under (native)
 Windows, and then the name resolve will be done in a new thread, and the
 supported asynch API will be the same as for ares-builds.

 If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
 libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
 defined.

 The curl_host*.c sources files are split up like this:

 curl_hostip.c   - method-independent resolver functions and utility functions
 curl_hostasyn.c - functions for asynchronous name resolves
 curl_hostsyn.c  - functions for synchronous name resolves
 curl_hostares.c - functions for ares-using name resolves
 curl_hostthre.c - functions for threaded name resolves
 curl_hostip4.c  - ipv4-specific functions
 curl_hostip6.c  - ipv6-specific functions

 The curl_hostip.h is the single united header file for all this. It defines
 the CURLRES_* defines based on the config*.h and curl_setup.h defines.