From a39861b7bf03ec05ff09ed4b64adf6f09a82861a Mon Sep 17 00:00:00 2001 From: cry-inc <manuel@caputo.de> Date: Wed, 7 May 2014 16:38:23 +0200 Subject: [PATCH] Fixed wrong behavior of mg_set_option() with option "listening_port" caused by SO_REUSEADDR when using Windows --- mongoose.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mongoose.c b/mongoose.c index d39709e31..212019371 100644 --- a/mongoose.c +++ b/mongoose.c @@ -525,10 +525,15 @@ static int ns_parse_port_string(const char *str, union socket_address *sa) { // 'sa' must be an initialized address to bind to static sock_t ns_open_listening_socket(union socket_address *sa) { socklen_t len = sizeof(*sa); - sock_t on = 1, sock = INVALID_SOCKET; +#ifndef _WIN32 + sock_t on = 1; +#endif + sock_t sock = INVALID_SOCKET; if ((sock = socket(sa->sa.sa_family, SOCK_STREAM, 6)) != INVALID_SOCKET && +#ifndef _WIN32 !setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &on, sizeof(on)) && +#endif !bind(sock, &sa->sa, sa->sa.sa_family == AF_INET ? sizeof(sa->sin) : sizeof(sa->sa)) && !listen(sock, SOMAXCONN)) { -- GitLab