gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnurl] 84/151: curl_setup: disable IPv6 resolver without `getaddrinfo`


From: gnunet
Subject: [gnurl] 84/151: curl_setup: disable IPv6 resolver without `getaddrinfo`
Date: Fri, 20 Dec 2019 14:26:33 +0100

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to branch master
in repository gnurl.

commit 67a08dca27a6a07b36c7f97252e284ca957ff1a5
Author: Marcel Raad <address@hidden>
AuthorDate: Tue Nov 26 15:06:31 2019 +0100

    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
---
 lib/asyn-thread.c      | 14 ++++++++++++--
 lib/curl_setup.h       |  2 +-
 lib/hostip4.c          | 10 ++++++++++
 tests/server/resolve.c |  6 +++---
 4 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
index 8c552baa9..b08497aaa 100755
--- a/lib/asyn-thread.c
+++ b/lib/asyn-thread.c
@@ -698,6 +698,16 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct 
connectdata *conn,
 
   *waitp = 0; /* default to synchronous response */
 
+#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);
@@ -741,7 +751,7 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct connectdata 
*conn,
       /* This is a dotted IP address 123.123.123.123-style */
       return Curl_ip2addr(AF_INET, &in, hostname, port);
   }
-#ifdef CURLRES_IPV6
+#ifdef ENABLE_IPV6
   {
     struct in6_addr in6;
     /* check if this is an IPv6 address string */
@@ -749,7 +759,7 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct connectdata 
*conn,
       /* This is an IPv6 address literal */
       return Curl_ip2addr(AF_INET6, &in6, hostname, port);
   }
-#endif /* CURLRES_IPV6 */
+#endif /* ENABLE_IPV6 */
 #endif /* !USE_RESOLVE_ON_IPS */
 
 #ifdef CURLRES_IPV6
diff --git a/lib/curl_setup.h b/lib/curl_setup.h
index cc36e28ec..5d6e8d6f7 100644
--- a/lib/curl_setup.h
+++ b/lib/curl_setup.h
@@ -585,7 +585,7 @@
 #  define CURLRES_SYNCH
 #endif
 
-#ifdef ENABLE_IPV6
+#if defined(ENABLE_IPV6) && defined(HAVE_GETADDRINFO)
 #  define CURLRES_IPV6
 #else
 #  define CURLRES_IPV4
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);
diff --git a/tests/server/resolve.c b/tests/server/resolve.c
index 4cbdba6ec..993e03125 100644
--- a/tests/server/resolve.c
+++ b/tests/server/resolve.c
@@ -68,7 +68,7 @@ int main(int argc, char *argv[])
   while(argc>arg) {
     if(!strcmp("--version", argv[arg])) {
       printf("resolve IPv4%s\n",
-#ifdef ENABLE_IPV6
+#if defined(CURLRES_IPV6)
              "/IPv6"
 #else
              ""
@@ -95,7 +95,7 @@ int main(int argc, char *argv[])
     puts("Usage: resolve [option] <host>\n"
          " --version\n"
          " --ipv4"
-#ifdef ENABLE_IPV6
+#if defined(CURLRES_IPV6)
          "\n --ipv6"
 #endif
          );
@@ -107,7 +107,7 @@ int main(int argc, char *argv[])
   atexit(win32_cleanup);
 #endif
 
-#ifdef ENABLE_IPV6
+#if defined(CURLRES_IPV6)
   if(use_ipv6) {
     /* Check that the system has IPv6 enabled before checking the resolver */
     curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]