commit 2eb0a5f92d7496e36bbdcb7c1c8ba1d3a829ced0
parent 9da5831ce0fa14605ad15315d3ac6af74d33767c
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Sat, 25 May 2019 11:06:05 +0300
Proper detection of .sin?_len members, fixed build on *BSD
Diffstat:
4 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/configure.ac b/configure.ac
@@ -774,10 +774,9 @@ AM_CONDITIONAL([HAVE_ZLIB], [[test "x$have_zlib" = xyes]])
# Check for generic functions
AC_CHECK_FUNCS([rand random])
-AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
- [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
- ],
- [],
+AC_CHECK_MEMBERS([struct sockaddr_in.sin_len, struct sockaddr_in6.sin6_len,
+ struct sockaddr_storage.ss_len],
+ [], [],
[
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
@@ -849,7 +848,7 @@ int main(void)
{
zr_mem(&sa, c_addr_size);
sa.sin_family = AF_INET;
-#if HAVE_SOCKADDR_IN_SIN_LEN
+#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
sa.sin_len = c_addr_size;
#endif
if (0 == bind (sckt, (struct sockaddr *)&sa, c_addr_size))
diff --git a/src/lib/daemon_start.c b/src/lib/daemon_start.c
@@ -310,7 +310,7 @@ open_listen_socket (struct MHD_Daemon *daemon)
#ifdef IN6ADDR_ANY_INIT
sin6->sin6_addr = static_in6any;
#endif
-#if HAVE_SOCKADDR_IN_SIN_LEN
+#if HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
sin6->sin6_len = sizeof (struct sockaddr_in6);
#endif
}
@@ -327,7 +327,7 @@ open_listen_socket (struct MHD_Daemon *daemon)
sin4->sin_port = htons (daemon->listen_port);
if (0 != INADDR_ANY)
sin4->sin_addr.s_addr = htonl (INADDR_ANY);
-#if HAVE_SOCKADDR_IN_SIN_LEN
+#if HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
sin4->sin_len = sizeof (struct sockaddr_in);
#endif
}
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
@@ -5981,7 +5981,7 @@ MHD_start_daemon_va (unsigned int flags,
#ifdef IN6ADDR_ANY_INIT
servaddr6.sin6_addr = static_in6any;
#endif
-#if HAVE_SOCKADDR_IN_SIN_LEN
+#if HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
servaddr6.sin6_len = sizeof (struct sockaddr_in6);
#endif
servaddr = (struct sockaddr *) &servaddr6;
@@ -5996,7 +5996,7 @@ MHD_start_daemon_va (unsigned int flags,
servaddr4.sin_port = htons (port);
if (0 != INADDR_ANY)
servaddr4.sin_addr.s_addr = htonl (INADDR_ANY);
-#if HAVE_SOCKADDR_IN_SIN_LEN
+#if HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
servaddr4.sin_len = sizeof (struct sockaddr_in);
#endif
servaddr = (struct sockaddr *) &servaddr4;
@@ -6084,8 +6084,8 @@ MHD_start_daemon_va (unsigned int flags,
0,
sizeof (struct sockaddr_storage));
addrlen = sizeof (struct sockaddr_storage);
-#ifdef HAVE_SOCKADDR_IN_SIN_LEN
- bindaddr.sin_len = addrlen;
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN
+ bindaddr.ss_len = addrlen;
#endif
if (0 != getsockname (listen_fd,
(struct sockaddr *) &bindaddr,
diff --git a/src/microhttpd/test_shutdown_select.c b/src/microhttpd/test_shutdown_select.c
@@ -173,7 +173,7 @@ start_socket_listen(int domain)
memset (&sock_addr, 0, sizeof (struct sockaddr_in));
sock_addr.sin_family = AF_INET;
sock_addr.sin_port = htons (0);
-#if HAVE_SOCKADDR_IN_SIN_LEN
+#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
sock_addr.sin_len = sizeof (struct sockaddr_in);
#endif
addrlen = sizeof (struct sockaddr_in);