gnunet-svn
[Top][All Lists]
Advanced

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

[libmicrohttpd] 03/03: configure: check whether IPv6 could be used for t


From: gnunet
Subject: [libmicrohttpd] 03/03: configure: check whether IPv6 could be used for testing
Date: Wed, 07 Oct 2020 10:31:19 +0200

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

karlson2k pushed a commit to branch master
in repository libmicrohttpd.

commit d4b9fc7ee15bad4cee47c91e5ecd2c05b069a70a
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Tue Oct 6 21:37:46 2020 +0300

    configure: check whether IPv6 could be used for testing
---
 ChangeLog                     | 11 +++--
 configure.ac                  | 93 +++++++++++++++++++++++++++++++++++++++++++
 src/microhttpd/test_options.c |  6 +--
 3 files changed, 104 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e4727a55..9e85001c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed 07 Oct 2020 11:07:00 MSK
+    W32 default target version changed to Vista, XP is still supported.
+    Minor fixes and additional asserts for memorypool.
+    IPv6 tests are not used if IPv6 is disabled at run-time. -EG
+
 Sun 27 Sep 2020 10:08:03 PM CEST
     Fixed incorrect triggering of epoll edge polling for
     "upgraded" TLS connections.  Fixed a few cases where
@@ -16,7 +21,7 @@ Thu 24 Sep 2020 16:55:00 MSK
     the registries.
     Fixed portability of test_upgrade_large.
     Minor testsuite fixes.
-    Restored parallel build of libmicrohttpd (except tests).
+    Restored parallel build of libmicrohttpd (except tests). -EG
 
 Fri 11 Sep 2020 10:08:22 PM CEST
     Fix crash problem in PostProcessor reported by MD. -CG
@@ -205,11 +210,11 @@ Mon May 20 15:39:35 MSK 2019
        Compiler warning fixes. -EG/CG
        Fixed example for non-64bits platforms. -EG
 
-Web May 15 23:51:49 MSK 2019
+Wed May 15 23:51:49 MSK 2019
        Optimized and improved processing speed by using precalculated and
        already calculated lengths of strings. -EG
 
-Web May 15 14:54:00 MSK 2019
+Wed May 15 14:54:00 MSK 2019
        Fixed build from source on GNU Hurd. -EG
 
 Mon May  6 11:58:00 MSK 2019
diff --git a/configure.ac b/configure.ac
index 7db4df29..d8d12277 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2129,6 +2129,99 @@ AC_CACHE_CHECK([[for calloc()]], 
[[mhd_cv_have_func_calloc]],
 AS_VAR_IF([[mhd_cv_have_func_calloc]], [["yes"]],
   [AC_DEFINE([[HAVE_CALLOC]], [[1]], [Define to 1 if you have the usable 
`calloc' function.])])
 
+# Some systems have IPv6 disabled in kernel at run-time
+AS_IF([[test "x${have_inet6}" = "xyes" && test "x${cross_compiling}" = "xno"]],
+ [
+   AC_CACHE_CHECK([whether IPv6 could be used for 
testing],[mhd_cv_ipv6_for_testing],
+     [
+       AC_RUN_IFELSE(
+         [
+           AC_LANG_SOURCE([[
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_IP_H
+#include <netinet/ip.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+
+static void zr_mem(void *ptr, socklen_t size)
+{ char *mem = ptr; while(size--) {mem[0] = 0; mem++;} }
+
+int main(void)
+{
+  int ret = 30;
+  struct sockaddr_in6 sa;
+#if !defined(_WIN32) || defined(__CYGWIN__)
+  int sckt;
+  const int invld_sckt = -1;
+#else
+  SOCKET sckt;
+  const SOCKET invld_sckt = INVALID_SOCKET;
+  WSADATA wsa_data;
+
+  WSAStartup(MAKEWORD(2, 2), &wsa_data);
+#endif
+  zr_mem(&sa, sizeof(sa));
+  sa.sin6_family = AF_INET6;
+  sa.sin6_port = 0;
+  sa.sin6_addr = in6addr_loopback;
+#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
+  sa.sin6_len = sizeof(sa);
+#endif
+  sckt = socket (PF_INET6, SOCK_STREAM, 0);
+  if (invld_sckt != sckt)
+  {
+    if (0 == bind (sckt, (struct sockaddr *)&sa, sizeof(sa)))
+    {
+      if (0 == listen (sckt, 1))
+        ret = 0;
+      else
+        ret = 1; /* listen() failed */
+    } else ret = 2; /* bind() failed */
+#if !defined(_WIN32) || defined(__CYGWIN__)
+    close (sckt);
+#else
+    closesocket (sckt);
+#endif
+  } else ret = 3; /* socket() failed */
+#if defined(_WIN32) && !defined(__CYGWIN__)
+  WSACleanup();
+#endif
+  return ret;
+}
+           ]])
+         ], [[mhd_cv_ipv6_for_testing="yes"]], 
[[mhd_cv_ipv6_for_testing="no"]], [[mhd_cv_ipv6_for_testing="no"]]
+       )
+     ]
+   )
+ ]
+)
+AS_VAR_IF([mhd_cv_ipv6_for_testing],["yes"],
+       [AC_DEFINE([[USE_IPV6_TESTING]], [[1]], [Define to 1 if your kernel 
supports IPv6 and IPv6 is enabled and useful for testing.])]
+)
+
+
 # Check for fork() and waitpid(). They are used for tests.
 AC_MSG_CHECKING([[for fork()]])
 mhd_have_fork_waitpid='no'
diff --git a/src/microhttpd/test_options.c b/src/microhttpd/test_options.c
index 9685837e..575b6a2b 100644
--- a/src/microhttpd/test_options.c
+++ b/src/microhttpd/test_options.c
@@ -84,7 +84,7 @@ test_ip_addr_option ()
 {
   struct MHD_Daemon *d;
   struct sockaddr_in daemon_ip_addr;
-#if HAVE_INET6
+#if HAVE_INET6 && defined (USE_IPV6_TESTING)
   struct sockaddr_in6 daemon_ip_addr6;
 #endif
 
@@ -93,7 +93,7 @@ test_ip_addr_option ()
   daemon_ip_addr.sin_port = 0;
   daemon_ip_addr.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
 
-#if HAVE_INET6
+#if HAVE_INET6 && defined (USE_IPV6_TESTING)
   memset (&daemon_ip_addr6, 0, sizeof (struct sockaddr_in6));
   daemon_ip_addr6.sin6_family = AF_INET6;
   daemon_ip_addr6.sin6_port = 0;
@@ -109,7 +109,7 @@ test_ip_addr_option ()
 
   MHD_stop_daemon (d);
 
-#if HAVE_INET6
+#if HAVE_INET6 && defined (USE_IPV6_TESTING)
   d = MHD_start_daemon (MHD_USE_ERROR_LOG | MHD_USE_IPv6, 0,
                         NULL, NULL, &ahc_echo, NULL, MHD_OPTION_SOCK_ADDR,
                         &daemon_ip_addr6, MHD_OPTION_END);

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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