aboutsummaryrefslogtreecommitdiff
path: root/src/microhttpd/daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/daemon.c')
-rw-r--r--src/microhttpd/daemon.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 9931e6b7..c4ea8d0b 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -5063,13 +5063,20 @@ MHD_start_daemon_va (unsigned int flags,
5063 { 5063 {
5064 /* User requested to disallow reusing listening address:port. 5064 /* User requested to disallow reusing listening address:port.
5065 * Do nothing except for Windows where SO_EXCLUSIVEADDRUSE 5065 * Do nothing except for Windows where SO_EXCLUSIVEADDRUSE
5066 * is used. Fail if it does not exist or setsockopt fails. 5066 * is used and Solaris with SO_EXCLBIND.
5067 * Fail if MHD was compiled for W32 without SO_EXCLUSIVEADDRUSE
5068 * or setsockopt fails.
5067 */ 5069 */
5068#ifdef _WIN32 5070#if (defined(_WIN32) && defined(SO_EXCLUSIVEADDRUSE)) || \
5071 (defined(__sun) && defined(SO_EXCLBIND))
5069#ifdef SO_EXCLUSIVEADDRUSE 5072#ifdef SO_EXCLUSIVEADDRUSE
5070 if (0 > setsockopt (socket_fd, 5073 if (0 > setsockopt (socket_fd,
5071 SOL_SOCKET, 5074 SOL_SOCKET,
5075#ifdef SO_EXCLUSIVEADDRUSE
5072 SO_EXCLUSIVEADDRUSE, 5076 SO_EXCLUSIVEADDRUSE,
5077#else /* SO_EXCLBIND */
5078 SO_EXCLBIND,
5079#endif /* SO_EXCLBIND */
5073 (void *) &on, 5080 (void *) &on,
5074 sizeof (on))) 5081 sizeof (on)))
5075 { 5082 {
@@ -5080,7 +5087,7 @@ MHD_start_daemon_va (unsigned int flags,
5080#endif 5087#endif
5081 goto free_and_fail; 5088 goto free_and_fail;
5082 } 5089 }
5083#else /* SO_EXCLUSIVEADDRUSE not defined on W32? */ 5090#elif defined(_WIN32) /* SO_EXCLUSIVEADDRUSE not defined on W32? */
5084#ifdef HAVE_MESSAGES 5091#ifdef HAVE_MESSAGES
5085 MHD_DLOG (daemon, 5092 MHD_DLOG (daemon,
5086 _("Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined\n")); 5093 _("Cannot disallow listening address reuse: SO_EXCLUSIVEADDRUSE not defined\n"));