diff options
Diffstat (limited to 'src/microhttpd/daemon.c')
-rw-r--r-- | src/microhttpd/daemon.c | 13 |
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")); |