summaryrefslogtreecommitdiff
path: root/lib/hostip4.c
diff options
context:
space:
mode:
authorMarcel Raad <Marcel.Raad@teamviewer.com>2019-11-26 15:06:31 +0100
committerMarcel Raad <Marcel.Raad@teamviewer.com>2019-12-03 21:37:33 +0100
commit67a08dca27a6a07b36c7f97252e284ca957ff1a5 (patch)
tree0c7d64fa489631d4057904ce0482fd86ab56dca7 /lib/hostip4.c
parentab712afa8fb9d2bf7850aa8d031937ca515efa01 (diff)
downloadcurl-67a08dca27a6a07b36c7f97252e284ca957ff1a5.tar.gz
curl_setup: disable IPv6 resolver without `getaddrinfo`
Also, use `CURLRES_IPV6` only for actual DNS resolution, not for IPv6 address support. This makes it possible to connect to IPv6 literals by setting `ENABLE_IPV6` even without `getaddrinfo` support. It also fixes the CMake build when using the synchronous resolver without `getaddrinfo` support. Closes https://github.com/curl/curl/pull/4662
Diffstat (limited to 'lib/hostip4.c')
-rw-r--r--lib/hostip4.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/hostip4.c b/lib/hostip4.c
index e6ba710d8..750e0dd5a 100644
--- a/lib/hostip4.c
+++ b/lib/hostip4.c
@@ -131,6 +131,16 @@ Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
struct in_addr in;
struct hostent *buf = NULL;
+#ifdef ENABLE_IPV6
+ {
+ struct in6_addr in6;
+ /* check if this is an IPv6 address string */
+ if(Curl_inet_pton(AF_INET6, hostname, &in6) > 0)
+ /* This is an IPv6 address literal */
+ return Curl_ip2addr(AF_INET6, &in6, hostname, port);
+ }
+#endif /* ENABLE_IPV6 */
+
if(Curl_inet_pton(AF_INET, hostname, &in) > 0)
/* This is a dotted IP address 123.123.123.123-style */
return Curl_ip2addr(AF_INET, &in, hostname, port);