Clarify Windows SO_REUSEADDR exception
diff --git a/common/network/TcpSocket.cxx b/common/network/TcpSocket.cxx
index 99895ad..1ebaeec 100644
--- a/common/network/TcpSocket.cxx
+++ b/common/network/TcpSocket.cxx
@@ -440,10 +440,15 @@
   }
 #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;