libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

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:
Mconfigure.ac | 9++++-----
Msrc/lib/daemon_start.c | 4++--
Msrc/microhttpd/daemon.c | 8++++----
Msrc/microhttpd/test_shutdown_select.c | 2+-
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);