aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/shared/Networking/AsyncAcceptor.h9
-rw-r--r--src/server/worldserver/TCSoap/TCSoap.cpp4
2 files changed, 13 insertions, 0 deletions
diff --git a/src/server/shared/Networking/AsyncAcceptor.h b/src/server/shared/Networking/AsyncAcceptor.h
index 926ab6d4d1c..62d418dd6fe 100644
--- a/src/server/shared/Networking/AsyncAcceptor.h
+++ b/src/server/shared/Networking/AsyncAcceptor.h
@@ -84,6 +84,15 @@ public:
return false;
}
+#if TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS
+ _acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true), errorCode);
+ if (errorCode)
+ {
+ TC_LOG_INFO("network", "Failed to set reuse_address option on acceptor %s", errorCode.message().c_str());
+ return false;
+ }
+#endif
+
_acceptor.bind(_endpoint, errorCode);
if (errorCode)
{
diff --git a/src/server/worldserver/TCSoap/TCSoap.cpp b/src/server/worldserver/TCSoap/TCSoap.cpp
index 83e49396b04..88c79fa91d3 100644
--- a/src/server/worldserver/TCSoap/TCSoap.cpp
+++ b/src/server/worldserver/TCSoap/TCSoap.cpp
@@ -29,6 +29,10 @@ void TCSoapThread(const std::string& host, uint16 port)
soap_set_imode(&soap, SOAP_C_UTFSTRING);
soap_set_omode(&soap, SOAP_C_UTFSTRING);
+#if TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS
+ soap.bind_flags = SO_REUSEADDR;
+#endif
+
// check every 3 seconds if world ended
soap.accept_timeout = 3;
soap.recv_timeout = 5;