From f83601de2f0d4e42afcdb4951e170b7b9450643e Mon Sep 17 00:00:00 2001 From: jackpoz Date: Fri, 18 Jan 2019 20:31:47 +0100 Subject: Core/Networking: Set SO_REUSEADDR on *nix platforms (cherry picked from commit 46f2595f511011d577be0ecee3d9f44c980ddc92) --- src/server/shared/Networking/AsyncAcceptor.h | 9 +++++++++ src/server/worldserver/TCSoap/TCSoap.cpp | 4 ++++ 2 files changed, 13 insertions(+) (limited to 'src/server') diff --git a/src/server/shared/Networking/AsyncAcceptor.h b/src/server/shared/Networking/AsyncAcceptor.h index 89a17c2ec3c..6540db66474 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 b5c0804bd44..996e9d5e82e 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; -- cgit v1.2.3