aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2019-05-25 11:06:05 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2019-05-25 11:37:38 +0300
commit2eb0a5f92d7496e36bbdcb7c1c8ba1d3a829ced0 (patch)
treed263cf128db91945e0098c399203a4918d29b04d
parent9da5831ce0fa14605ad15315d3ac6af74d33767c (diff)
downloadlibmicrohttpd-2eb0a5f92d7496e36bbdcb7c1c8ba1d3a829ced0.tar.gz
libmicrohttpd-2eb0a5f92d7496e36bbdcb7c1c8ba1d3a829ced0.zip
Proper detection of .sin?_len members, fixed build on *BSD
-rw-r--r--configure.ac9
-rw-r--r--src/lib/daemon_start.c4
-rw-r--r--src/microhttpd/daemon.c8
-rw-r--r--src/microhttpd/test_shutdown_select.c2
4 files changed, 11 insertions, 12 deletions
diff --git a/configure.ac b/configure.ac
index 53d37ca4..42a1f361 100644
--- a/configure.ac
+++ b/configure.ac
@@ -774,10 +774,9 @@ AM_CONDITIONAL([HAVE_ZLIB], [[test "x$have_zlib" = xyes]])
774# Check for generic functions 774# Check for generic functions
775AC_CHECK_FUNCS([rand random]) 775AC_CHECK_FUNCS([rand random])
776 776
777AC_CHECK_MEMBER([struct sockaddr_in.sin_len], 777AC_CHECK_MEMBERS([struct sockaddr_in.sin_len, struct sockaddr_in6.sin6_len,
778 [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?]) 778 struct sockaddr_storage.ss_len],
779 ], 779 [], [],
780 [],
781 [ 780 [
782#ifdef HAVE_SYS_TYPES_H 781#ifdef HAVE_SYS_TYPES_H
783#include <sys/types.h> 782#include <sys/types.h>
@@ -849,7 +848,7 @@ int main(void)
849 { 848 {
850 zr_mem(&sa, c_addr_size); 849 zr_mem(&sa, c_addr_size);
851 sa.sin_family = AF_INET; 850 sa.sin_family = AF_INET;
852#if HAVE_SOCKADDR_IN_SIN_LEN 851#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
853 sa.sin_len = c_addr_size; 852 sa.sin_len = c_addr_size;
854#endif 853#endif
855 if (0 == bind (sckt, (struct sockaddr *)&sa, c_addr_size)) 854 if (0 == bind (sckt, (struct sockaddr *)&sa, c_addr_size))
diff --git a/src/lib/daemon_start.c b/src/lib/daemon_start.c
index 8e2c9fb5..52124c77 100644
--- a/src/lib/daemon_start.c
+++ b/src/lib/daemon_start.c
@@ -310,7 +310,7 @@ open_listen_socket (struct MHD_Daemon *daemon)
310#ifdef IN6ADDR_ANY_INIT 310#ifdef IN6ADDR_ANY_INIT
311 sin6->sin6_addr = static_in6any; 311 sin6->sin6_addr = static_in6any;
312#endif 312#endif
313#if HAVE_SOCKADDR_IN_SIN_LEN 313#if HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
314 sin6->sin6_len = sizeof (struct sockaddr_in6); 314 sin6->sin6_len = sizeof (struct sockaddr_in6);
315#endif 315#endif
316 } 316 }
@@ -327,7 +327,7 @@ open_listen_socket (struct MHD_Daemon *daemon)
327 sin4->sin_port = htons (daemon->listen_port); 327 sin4->sin_port = htons (daemon->listen_port);
328 if (0 != INADDR_ANY) 328 if (0 != INADDR_ANY)
329 sin4->sin_addr.s_addr = htonl (INADDR_ANY); 329 sin4->sin_addr.s_addr = htonl (INADDR_ANY);
330#if HAVE_SOCKADDR_IN_SIN_LEN 330#if HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
331 sin4->sin_len = sizeof (struct sockaddr_in); 331 sin4->sin_len = sizeof (struct sockaddr_in);
332#endif 332#endif
333 } 333 }
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index b2185b4c..2ee367c4 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -5981,7 +5981,7 @@ MHD_start_daemon_va (unsigned int flags,
5981#ifdef IN6ADDR_ANY_INIT 5981#ifdef IN6ADDR_ANY_INIT
5982 servaddr6.sin6_addr = static_in6any; 5982 servaddr6.sin6_addr = static_in6any;
5983#endif 5983#endif
5984#if HAVE_SOCKADDR_IN_SIN_LEN 5984#if HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
5985 servaddr6.sin6_len = sizeof (struct sockaddr_in6); 5985 servaddr6.sin6_len = sizeof (struct sockaddr_in6);
5986#endif 5986#endif
5987 servaddr = (struct sockaddr *) &servaddr6; 5987 servaddr = (struct sockaddr *) &servaddr6;
@@ -5996,7 +5996,7 @@ MHD_start_daemon_va (unsigned int flags,
5996 servaddr4.sin_port = htons (port); 5996 servaddr4.sin_port = htons (port);
5997 if (0 != INADDR_ANY) 5997 if (0 != INADDR_ANY)
5998 servaddr4.sin_addr.s_addr = htonl (INADDR_ANY); 5998 servaddr4.sin_addr.s_addr = htonl (INADDR_ANY);
5999#if HAVE_SOCKADDR_IN_SIN_LEN 5999#if HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
6000 servaddr4.sin_len = sizeof (struct sockaddr_in); 6000 servaddr4.sin_len = sizeof (struct sockaddr_in);
6001#endif 6001#endif
6002 servaddr = (struct sockaddr *) &servaddr4; 6002 servaddr = (struct sockaddr *) &servaddr4;
@@ -6084,8 +6084,8 @@ MHD_start_daemon_va (unsigned int flags,
6084 0, 6084 0,
6085 sizeof (struct sockaddr_storage)); 6085 sizeof (struct sockaddr_storage));
6086 addrlen = sizeof (struct sockaddr_storage); 6086 addrlen = sizeof (struct sockaddr_storage);
6087#ifdef HAVE_SOCKADDR_IN_SIN_LEN 6087#ifdef HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN
6088 bindaddr.sin_len = addrlen; 6088 bindaddr.ss_len = addrlen;
6089#endif 6089#endif
6090 if (0 != getsockname (listen_fd, 6090 if (0 != getsockname (listen_fd,
6091 (struct sockaddr *) &bindaddr, 6091 (struct sockaddr *) &bindaddr,
diff --git a/src/microhttpd/test_shutdown_select.c b/src/microhttpd/test_shutdown_select.c
index 934cde79..a334f63f 100644
--- a/src/microhttpd/test_shutdown_select.c
+++ b/src/microhttpd/test_shutdown_select.c
@@ -173,7 +173,7 @@ start_socket_listen(int domain)
173 memset (&sock_addr, 0, sizeof (struct sockaddr_in)); 173 memset (&sock_addr, 0, sizeof (struct sockaddr_in));
174 sock_addr.sin_family = AF_INET; 174 sock_addr.sin_family = AF_INET;
175 sock_addr.sin_port = htons (0); 175 sock_addr.sin_port = htons (0);
176#if HAVE_SOCKADDR_IN_SIN_LEN 176#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
177 sock_addr.sin_len = sizeof (struct sockaddr_in); 177 sock_addr.sin_len = sizeof (struct sockaddr_in);
178#endif 178#endif
179 addrlen = sizeof (struct sockaddr_in); 179 addrlen = sizeof (struct sockaddr_in);