]> source.dussan.org Git - tigervnc.git/commitdiff
Repair SO_REUSEADDR
authorPierre Ossman <ossman@cendio.se>
Thu, 23 Apr 2015 09:23:16 +0000 (11:23 +0200)
committerPierre Ossman <ossman@cendio.se>
Thu, 23 Apr 2015 09:23:16 +0000 (11:23 +0200)
SO_REUSEADDR needs to be set before we call bind() for it to have
any effect. It got shuffled around in e4d9726.

common/network/TcpSocket.cxx

index 3b656cd7c539fe79d1a3ffa6a43bec3e1c6696d8..99895ad822baf1d678602b85d00a55fec812cf8f 100644 (file)
@@ -440,11 +440,6 @@ TcpListener::TcpListener(const struct sockaddr *listenaddr,
   }
 #endif /* defined(IPV6_V6ONLY) */
 
-  if (bind(sock, &sa.u.sa, listenaddrlen) == -1) {
-    closesocket(sock);
-    throw SocketException("failed to bind socket", errorNumber);
-  }
-
 #ifndef WIN32
   // - By default, close the socket on exec()
   fcntl(sock, F_SETFD, FD_CLOEXEC);
@@ -457,6 +452,11 @@ TcpListener::TcpListener(const struct sockaddr *listenaddr,
   }
 #endif
 
+  if (bind(sock, &sa.u.sa, listenaddrlen) == -1) {
+    closesocket(sock);
+    throw SocketException("failed to bind socket", errorNumber);
+  }
+
   // - Set it to be a listening socket
   if (listen(sock, 5) < 0) {
     int e = errorNumber;