diff options
author | jackpoz <giacomopoz@gmail.com> | 2019-01-18 20:31:47 +0100 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2019-01-18 20:31:47 +0100 |
commit | 46f2595f511011d577be0ecee3d9f44c980ddc92 (patch) | |
tree | bc2eb4386005a75634998bb5226944f16aed1972 | |
parent | 12852ddb3019aabc2f6deaff9c1b0584fd1b6bb2 (diff) |
Core/Networking: Set SO_REUSEADDR on *nix platforms
-rw-r--r-- | src/server/shared/Networking/AsyncAcceptor.h | 9 | ||||
-rw-r--r-- | src/server/worldserver/TCSoap/TCSoap.cpp | 4 |
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; |