diff --git a/mongoose.c b/mongoose.c
index d39709e315bc614b948a736fd1d65d493840ec08..2120193717fd14a2fddf8ed7f6038c8519cb4b2a 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)) {