changeset 11571:f4dcf759a3be draft

(svn r15940) -Codechange: move setting reuse address to the binding process.
author rubidium <rubidium@openttd.org>
date Fri, 03 Apr 2009 17:02:29 +0000
parents fbf8c02a8cba
children e65b8d1e5c99
files src/network/core/address.cpp src/network/network.cpp
diffstat 2 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/network/core/address.cpp
+++ b/src/network/core/address.cpp
@@ -163,6 +163,14 @@
 
 	if (!SetNoDelay(sock)) DEBUG(net, 1, "Setting TCP_NODELAY failed");
 
+	int reuse = 1;
+	/* The (const char*) cast is needed for windows!! */
+	if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&reuse, sizeof(reuse)) == -1) {
+		DEBUG(net, 1, "Could not bind, setsockopt() failed:", strerror(errno));
+		closesocket(sock);
+		return INVALID_SOCKET;
+	}
+
 	if (bind(sock, runp->ai_addr, runp->ai_addrlen) != 0) {
 		DEBUG(net, 1, "Could not bind: %s", strerror(errno));
 		closesocket(sock);
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -562,13 +562,6 @@
 		return false;
 	}
 
-	int reuse = 1;
-	/* The (const char*) cast is needed for windows!! */
-	if (setsockopt(ls, SOL_SOCKET, SO_REUSEADDR, (const char*)&reuse, sizeof(reuse)) == -1) {
-		ServerStartError("setsockopt() on listen socket failed");
-		return false;
-	}
-
 	_listensocket = ls;
 
 	return true;