]> source.dussan.org Git - tigervnc.git/commitdiff
Clarify Windows SO_REUSEADDR exception 168/head
authorPierre Ossman <ossman@cendio.se>
Thu, 23 Apr 2015 09:30:59 +0000 (11:30 +0200)
committerPierre Ossman <ossman@cendio.se>
Thu, 23 Apr 2015 09:30:59 +0000 (11:30 +0200)
common/network/TcpSocket.cxx

index 99895ad822baf1d678602b85d00a55fec812cf8f..1ebaeecba673fe779ca36538327bf2349ac968e4 100644 (file)
@@ -440,10 +440,15 @@ TcpListener::TcpListener(const struct sockaddr *listenaddr,
   }
 #endif /* defined(IPV6_V6ONLY) */
 
-#ifndef WIN32
+#ifdef FD_CLOEXEC
   // - By default, close the socket on exec()
   fcntl(sock, F_SETFD, FD_CLOEXEC);
+#endif
 
+  // SO_REUSEADDR is broken on Windows. It allows binding to a port
+  // that already has a listening socket on it. SO_EXCLUSIVEADDRUSE
+  // might do what we want, but requires investigation.
+#ifndef WIN32
   if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR,
                  (char *)&one, sizeof(one)) < 0) {
     int e = errorNumber;