aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin (Karlson2k) <k2k@narod.ru>2019-05-21 20:56:53 +0300
committerEvgeny Grin (Karlson2k) <k2k@narod.ru>2019-05-21 22:22:24 +0300
commit240604a333229d672f97682c4547cc67b5732bac (patch)
tree194298290febbad38811c4eed704c0e9edba33f7
parent93d614ea838ffb0f9f595a8d6d1c3f2d6419afb2 (diff)
downloadlibmicrohttpd-240604a333229d672f97682c4547cc67b5732bac.tar.gz
libmicrohttpd-240604a333229d672f97682c4547cc67b5732bac.zip
MHD_start_daemon(): fixed port detection on some platforms,
avoid re-use variable names.
-rw-r--r--src/microhttpd/daemon.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index fef1f8b3..57f59a57 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -6029,14 +6029,17 @@ MHD_start_daemon_va (unsigned int flags,
6029 if ( (0 == daemon->port) && 6029 if ( (0 == daemon->port) &&
6030 (0 == (*pflags & MHD_USE_NO_LISTEN_SOCKET)) ) 6030 (0 == (*pflags & MHD_USE_NO_LISTEN_SOCKET)) )
6031 { /* Get port number. */ 6031 { /* Get port number. */
6032 struct sockaddr_storage servaddr; 6032 struct sockaddr_storage bindaddr;
6033 6033
6034 memset (&servaddr, 6034 memset (&bindaddr,
6035 0, 6035 0,
6036 sizeof (struct sockaddr_storage)); 6036 sizeof (struct sockaddr_storage));
6037 addrlen = sizeof (servaddr); 6037 addrlen = sizeof (struct sockaddr_storage);
6038#ifdef HAVE_SOCKADDR_IN_SIN_LEN
6039 bindaddr.sin_len = addrlen;
6040#endif
6038 if (0 != getsockname (listen_fd, 6041 if (0 != getsockname (listen_fd,
6039 (struct sockaddr *) &servaddr, 6042 (struct sockaddr *) &bindaddr,
6040 &addrlen)) 6043 &addrlen))
6041 { 6044 {
6042#ifdef HAVE_MESSAGES 6045#ifdef HAVE_MESSAGES
@@ -6046,7 +6049,7 @@ MHD_start_daemon_va (unsigned int flags,
6046#endif /* HAVE_MESSAGES */ 6049#endif /* HAVE_MESSAGES */
6047 } 6050 }
6048#ifdef MHD_POSIX_SOCKETS 6051#ifdef MHD_POSIX_SOCKETS
6049 else if (sizeof (servaddr) < addrlen) 6052 else if (sizeof (bindaddr) < addrlen)
6050 { 6053 {
6051 /* should be impossible with `struct sockaddr_storage` */ 6054 /* should be impossible with `struct sockaddr_storage` */
6052#ifdef HAVE_MESSAGES 6055#ifdef HAVE_MESSAGES
@@ -6057,11 +6060,11 @@ MHD_start_daemon_va (unsigned int flags,
6057#endif /* MHD_POSIX_SOCKETS */ 6060#endif /* MHD_POSIX_SOCKETS */
6058 else 6061 else
6059 { 6062 {
6060 switch (servaddr.ss_family) 6063 switch (bindaddr.ss_family)
6061 { 6064 {
6062 case AF_INET: 6065 case AF_INET:
6063 { 6066 {
6064 struct sockaddr_in *s4 = (struct sockaddr_in *) &servaddr; 6067 struct sockaddr_in *s4 = (struct sockaddr_in *) &bindaddr;
6065 6068
6066 daemon->port = ntohs (s4->sin_port); 6069 daemon->port = ntohs (s4->sin_port);
6067 break; 6070 break;
@@ -6069,7 +6072,7 @@ MHD_start_daemon_va (unsigned int flags,
6069#ifdef HAVE_INET6 6072#ifdef HAVE_INET6
6070 case AF_INET6: 6073 case AF_INET6:
6071 { 6074 {
6072 struct sockaddr_in6 *s6 = (struct sockaddr_in6 *) &servaddr; 6075 struct sockaddr_in6 *s6 = (struct sockaddr_in6 *) &bindaddr;
6073 6076
6074 daemon->port = ntohs(s6->sin6_port); 6077 daemon->port = ntohs(s6->sin6_port);
6075 mhd_assert (0 != (*pflags & MHD_USE_IPv6)); 6078 mhd_assert (0 != (*pflags & MHD_USE_IPv6));