From 226bf217028017e408eadef66e60a1ea5762c961 Mon Sep 17 00:00:00 2001 From: Marcel Raad Date: Sat, 30 Nov 2019 15:49:32 +0100 Subject: [PATCH] configure: enable IPv6 support without `getaddrinfo` This makes it possible to recognize and connect to literal IPv6 addresses when `getaddrinfo` is not available, which is already the case for the CMake build. This affects e.g. classic MinGW because it still targets Windows 2000 by default, where `getaddrinfo` is not available, but general IPv6 support is. Instead of checking for `getaddrinfo`, check for `sockaddr_in6` as the CMake build does. Closes https://github.com/curl/curl/pull/4662 --- configure.ac | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/configure.ac b/configure.ac index 1b5a7fb4a..3e156bcae 100755 --- a/configure.ac +++ b/configure.ac @@ -1203,16 +1203,23 @@ AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]), ;; esac ], - AC_TRY_RUN([ /* is AF_INET6 available? */ + AC_TRY_RUN([ /* are AF_INET6 and sockaddr_in6 available? */ #include #ifdef HAVE_WINSOCK2_H #include +#include #else #include +#include +#if defined (__TANDEM) +# include +#endif #endif #include /* for exit() */ main() { + struct sockaddr_in6 s; + (void)s; if (socket(AF_INET6, SOCK_STREAM, 0) < 0) exit(1); else @@ -1227,8 +1234,12 @@ main() ipv6=yes )) -# Check if struct sockaddr_in6 have sin6_scope_id member if test "$ipv6" = yes; then + curl_ipv6_msg="enabled" + AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support]) + IPV6_ENABLED=1 + AC_SUBST(IPV6_ENABLED) + AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member]) AC_TRY_COMPILE([ #include @@ -4052,15 +4063,6 @@ AC_CHECK_FUNCS([fnmatch \ fi ]) -if test "$ipv6" = "yes"; then - if test "$curl_cv_func_getaddrinfo" = "yes"; then - AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support]) - IPV6_ENABLED=1 - AC_SUBST(IPV6_ENABLED) - curl_ipv6_msg="enabled" - fi -fi - CURL_CHECK_NONBLOCKING_SOCKET dnl ************************************************************