summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/network/core/address.cpp8
-rw-r--r--src/network/network.cpp7
2 files changed, 8 insertions, 7 deletions
diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp
index 5a79a436e..0498c793f 100644
--- a/src/network/core/address.cpp
+++ b/src/network/core/address.cpp
@@ -163,6 +163,14 @@ static SOCKET ListenLoopProc(addrinfo *runp)
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);
diff --git a/src/network/network.cpp b/src/network/network.cpp
index d2f918748..09e4e7a40 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -562,13 +562,6 @@ static bool NetworkListen()
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;