diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2019-05-25 11:06:05 +0300 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2019-05-25 11:37:38 +0300 |
commit | 2eb0a5f92d7496e36bbdcb7c1c8ba1d3a829ced0 (patch) | |
tree | d263cf128db91945e0098c399203a4918d29b04d | |
parent | 9da5831ce0fa14605ad15315d3ac6af74d33767c (diff) | |
download | libmicrohttpd-2eb0a5f92d7496e36bbdcb7c1c8ba1d3a829ced0.tar.gz libmicrohttpd-2eb0a5f92d7496e36bbdcb7c1c8ba1d3a829ced0.zip |
Proper detection of .sin?_len members, fixed build on *BSD
-rw-r--r-- | configure.ac | 9 | ||||
-rw-r--r-- | src/lib/daemon_start.c | 4 | ||||
-rw-r--r-- | src/microhttpd/daemon.c | 8 | ||||
-rw-r--r-- | src/microhttpd/test_shutdown_select.c | 2 |
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 |
775 | AC_CHECK_FUNCS([rand random]) | 775 | AC_CHECK_FUNCS([rand random]) |
776 | 776 | ||
777 | AC_CHECK_MEMBER([struct sockaddr_in.sin_len], | 777 | AC_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); |