diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2019-05-21 20:56:53 +0300 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2019-05-21 22:22:24 +0300 |
commit | 240604a333229d672f97682c4547cc67b5732bac (patch) | |
tree | 194298290febbad38811c4eed704c0e9edba33f7 | |
parent | 93d614ea838ffb0f9f595a8d6d1c3f2d6419afb2 (diff) | |
download | libmicrohttpd-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.c | 19 |
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)); |