commit a03074c3f799f6c681719ddb09e669c44c52caf1
parent fb0e5d5922de0df85290031cbdca9fd3fb569ae2
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Thu, 15 Jun 2017 17:52:11 +0300
Correctly initialize IPv6 "any" address and non-standard IPv4 "any" address.
Diffstat:
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
@@ -5516,11 +5516,17 @@ MHD_start_daemon_va (unsigned int flags,
#if HAVE_INET6
if (0 != (*pflags & MHD_USE_IPv6))
{
- memset (&servaddr6,
+#ifdef IN6ADDR_ANY_INIT
+ static const struct in6_addr static_in6any = IN6ADDR_ANY_INIT;
+#endif
+ memset (&servaddr6,
0,
sizeof (struct sockaddr_in6));
servaddr6.sin6_family = AF_INET6;
servaddr6.sin6_port = htons (port);
+#ifdef IN6ADDR_ANY_INIT
+ servaddr6.sin6_addr = static_in6any;
+#endif
#if HAVE_SOCKADDR_IN_SIN_LEN
servaddr6.sin6_len = sizeof (struct sockaddr_in6);
#endif
@@ -5534,6 +5540,8 @@ MHD_start_daemon_va (unsigned int flags,
sizeof (struct sockaddr_in));
servaddr4.sin_family = AF_INET;
servaddr4.sin_port = htons (port);
+ if (0 != INADDR_ANY)
+ servaddr4.sin_addr.s_addr = htonl (INADDR_ANY);
#if HAVE_SOCKADDR_IN_SIN_LEN
servaddr4.sin_len = sizeof (struct sockaddr_in);
#endif