diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-01-07 13:41:09 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2025-01-09 20:53:27 +0100 |
commit | 40696d4754880d9a4f76d46c83728c4ce52a24f2 (patch) | |
tree | ae8c75649a890d332499c8bfcaeb44fda387b2e1 | |
parent | bceca01ce57f13be0a3597c1852f4e7e4a8084d5 (diff) |
Core/Network: Simplify worldserver port configuration: removed InstanceServerPort
(cherry picked from commit 039acb20e4c218757d6b9fc441dc2da6820dafd1)
-rw-r--r-- | src/common/Utilities/MessageBuffer.h | 3 | ||||
-rw-r--r-- | src/server/bnetserver/Server/SessionManager.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocketMgr.cpp | 44 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocketMgr.h | 9 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 7 | ||||
-rw-r--r-- | src/server/game/World/World.h | 1 | ||||
-rw-r--r-- | src/server/worldserver/Main.cpp | 3 | ||||
-rw-r--r-- | src/server/worldserver/worldserver.conf.dist | 7 |
10 files changed, 14 insertions, 74 deletions
diff --git a/src/common/Utilities/MessageBuffer.h b/src/common/Utilities/MessageBuffer.h index 322a15992ab..5ed67d01e9b 100644 --- a/src/common/Utilities/MessageBuffer.h +++ b/src/common/Utilities/MessageBuffer.h @@ -32,9 +32,8 @@ public: _storage.resize(4096); } - explicit MessageBuffer(std::size_t initialSize) : _wpos(0), _rpos(0), _storage() + explicit MessageBuffer(std::size_t initialSize) : _wpos(0), _rpos(0), _storage(initialSize) { - _storage.resize(initialSize); } MessageBuffer(MessageBuffer const& right) : _wpos(right._wpos), _rpos(right._rpos), _storage(right._storage) diff --git a/src/server/bnetserver/Server/SessionManager.cpp b/src/server/bnetserver/Server/SessionManager.cpp index 6e07fcecff1..cb56972a9c2 100644 --- a/src/server/bnetserver/Server/SessionManager.cpp +++ b/src/server/bnetserver/Server/SessionManager.cpp @@ -35,7 +35,7 @@ NetworkThread<Battlenet::Session>* Battlenet::SessionManager::CreateThreads() co void Battlenet::SessionManager::OnSocketAccept(boost::asio::ip::tcp::socket&& sock, uint32 threadIndex) { - sSessionMgr.OnSocketOpen(std::forward<boost::asio::ip::tcp::socket>(sock), threadIndex); + sSessionMgr.OnSocketOpen(std::move(sock), threadIndex); } Battlenet::SessionManager& Battlenet::SessionManager::Instance() diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index a70653138d6..f308f1833f0 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -810,7 +810,7 @@ void WorldSession::SendConnectToInstance(WorldPackets::Auth::ConnectToSerial ser WorldPackets::Auth::ConnectTo connectTo; connectTo.Key = _instanceConnectKey.Raw; connectTo.Serial = serial; - connectTo.Payload.Port = sWorld->getIntConfig(CONFIG_PORT_INSTANCE); + connectTo.Payload.Port = sWorld->getIntConfig(CONFIG_PORT_WORLD); if (instanceAddress.is_v4()) { memcpy(connectTo.Payload.Where.Address.V4.data(), instanceAddress.to_v4().to_bytes().data(), 4); diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index f12dd005750..a34477b8100 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -59,13 +59,9 @@ uint8 const WorldSocket::ContinuedSessionSeed[16] = { 0x16, 0xAD, 0x0C, 0xD4, 0x uint8 const WorldSocket::EncryptionKeySeed[16] = { 0xE9, 0x75, 0x3C, 0x50, 0x90, 0x93, 0x61, 0xDA, 0x3B, 0x07, 0xEE, 0xFA, 0xFF, 0x9D, 0x41, 0xB8 }; WorldSocket::WorldSocket(boost::asio::ip::tcp::socket&& socket) : Socket(std::move(socket)), - _type(CONNECTION_TYPE_REALM), _key(0), _OverSpeedPings(0), - _worldSession(nullptr), _authed(false), _canRequestHotfixes(true), _sendBufferSize(4096), _compressionStream(nullptr) + _type(CONNECTION_TYPE_REALM), _key(0), _serverChallenge(), _sessionKey(), _encryptKey(), _OverSpeedPings(0), + _worldSession(nullptr), _authed(false), _canRequestHotfixes(true), _headerBuffer(sizeof(IncomingPacketHeader)), _sendBufferSize(4096), _compressionStream(nullptr) { - Trinity::Crypto::GetRandomBytes(_serverChallenge); - _sessionKey.fill(0); - _encryptKey.fill(0); - _headerBuffer.Resize(sizeof(IncomingPacketHeader)); } WorldSocket::~WorldSocket() @@ -242,6 +238,8 @@ bool WorldSocket::Update() void WorldSocket::HandleSendAuthSession() { + Trinity::Crypto::GetRandomBytes(_serverChallenge); + WorldPackets::Auth::AuthChallenge challenge; challenge.Challenge = _serverChallenge; memcpy(challenge.DosChallenge.data(), Trinity::Crypto::GetRandomBytes<32>().data(), 32); diff --git a/src/server/game/Server/WorldSocketMgr.cpp b/src/server/game/Server/WorldSocketMgr.cpp index e53bcb698a0..58f242b52f8 100644 --- a/src/server/game/Server/WorldSocketMgr.cpp +++ b/src/server/game/Server/WorldSocketMgr.cpp @@ -24,7 +24,7 @@ static void OnSocketAccept(boost::asio::ip::tcp::socket&& sock, uint32 threadIndex) { - sWorldSocketMgr.OnSocketOpen(std::forward<boost::asio::ip::tcp::socket>(sock), threadIndex); + sWorldSocketMgr.OnSocketOpen(std::move(sock), threadIndex); } class WorldSocketThread : public NetworkThread<WorldSocket> @@ -42,14 +42,11 @@ public: } }; -WorldSocketMgr::WorldSocketMgr() : BaseSocketMgr(), _instanceAcceptor(nullptr), _socketSystemSendBufferSize(-1), _socketApplicationSendBufferSize(65536), _tcpNoDelay(true) +WorldSocketMgr::WorldSocketMgr() : BaseSocketMgr(), _socketSystemSendBufferSize(-1), _socketApplicationSendBufferSize(65536), _tcpNoDelay(true) { } -WorldSocketMgr::~WorldSocketMgr() -{ - ASSERT(!_instanceAcceptor, "StopNetwork must be called prior to WorldSocketMgr destruction"); -} +WorldSocketMgr::~WorldSocketMgr() = default; WorldSocketMgr& WorldSocketMgr::Instance() { @@ -57,7 +54,7 @@ WorldSocketMgr& WorldSocketMgr::Instance() return instance; } -bool WorldSocketMgr::StartWorldNetwork(Trinity::Asio::IoContext& ioContext, std::string const& bindIp, uint16 port, uint16 instancePort, int threadCount) +bool WorldSocketMgr::StartNetwork(Trinity::Asio::IoContext& ioContext, std::string const& bindIp, uint16 port, int threadCount) { _tcpNoDelay = sConfigMgr->GetBoolDefault("Network.TcpNodelay", true); @@ -78,30 +75,7 @@ bool WorldSocketMgr::StartWorldNetwork(Trinity::Asio::IoContext& ioContext, std: if (!BaseSocketMgr::StartNetwork(ioContext, bindIp, port, threadCount)) return false; - AsyncAcceptor* instanceAcceptor = nullptr; - try - { - instanceAcceptor = new AsyncAcceptor(ioContext, bindIp, instancePort); - } - catch (boost::system::system_error const& err) - { - TC_LOG_ERROR("network", "Exception caught in WorldSocketMgr::StartNetwork ({}:{}): {}", bindIp, port, err.what()); - return false; - } - - if (!instanceAcceptor->Bind()) - { - TC_LOG_ERROR("network", "StartNetwork failed to bind instance socket acceptor"); - delete instanceAcceptor; - return false; - } - - _instanceAcceptor = instanceAcceptor; - - _instanceAcceptor->SetSocketFactory([this]() { return GetSocketForAccept(); }); - _acceptor->AsyncAcceptWithCallback<&OnSocketAccept>(); - _instanceAcceptor->AsyncAcceptWithCallback<&OnSocketAccept>(); sScriptMgr->OnNetworkStart(); return true; @@ -109,14 +83,8 @@ bool WorldSocketMgr::StartWorldNetwork(Trinity::Asio::IoContext& ioContext, std: void WorldSocketMgr::StopNetwork() { - if (_instanceAcceptor) - _instanceAcceptor->Close(); - BaseSocketMgr::StopNetwork(); - delete _instanceAcceptor; - _instanceAcceptor = nullptr; - sScriptMgr->OnNetworkStop(); } @@ -146,9 +114,7 @@ void WorldSocketMgr::OnSocketOpen(boost::asio::ip::tcp::socket&& sock, uint32 th } } - //sock->m_OutBufferSize = static_cast<size_t> (m_SockOutUBuff); - - BaseSocketMgr::OnSocketOpen(std::forward<boost::asio::ip::tcp::socket>(sock), threadIndex); + BaseSocketMgr::OnSocketOpen(std::move(sock), threadIndex); } NetworkThread<WorldSocket>* WorldSocketMgr::CreateThreads() const diff --git a/src/server/game/Server/WorldSocketMgr.h b/src/server/game/Server/WorldSocketMgr.h index 7049a6fff46..84b190575a4 100644 --- a/src/server/game/Server/WorldSocketMgr.h +++ b/src/server/game/Server/WorldSocketMgr.h @@ -39,7 +39,7 @@ public: static WorldSocketMgr& Instance(); /// Start network, listen at address:port . - bool StartWorldNetwork(Trinity::Asio::IoContext& ioContext, std::string const& bindIp, uint16 port, uint16 instancePort, int networkThreads); + bool StartNetwork(Trinity::Asio::IoContext& ioContext, std::string const& bindIp, uint16 port, int threadCount) override; /// Stops all network threads, It will wait for all running threads . void StopNetwork() override; @@ -54,13 +54,6 @@ protected: NetworkThread<WorldSocket>* CreateThreads() const override; private: - // private, must not be called directly - bool StartNetwork(Trinity::Asio::IoContext& ioContext, std::string const& bindIp, uint16 port, int threadCount) override - { - return BaseSocketMgr::StartNetwork(ioContext, bindIp, port, threadCount); - } - - AsyncAcceptor* _instanceAcceptor; int32 _socketSystemSendBufferSize; int32 _socketApplicationSendBufferSize; bool _tcpNoDelay; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 7ac7199b558..be2eb7f0f2e 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -846,16 +846,9 @@ void World::LoadConfigSettings(bool reload) uint32 val = sConfigMgr->GetIntDefault("WorldServerPort", 8085); if (val != m_int_configs[CONFIG_PORT_WORLD]) TC_LOG_ERROR("server.loading", "WorldServerPort option can't be changed at worldserver.conf reload, using current value ({}).", m_int_configs[CONFIG_PORT_WORLD]); - - val = sConfigMgr->GetIntDefault("InstanceServerPort", 8086); - if (val != m_int_configs[CONFIG_PORT_INSTANCE]) - TC_LOG_ERROR("server.loading", "InstanceServerPort option can't be changed at worldserver.conf reload, using current value ({}).", m_int_configs[CONFIG_PORT_INSTANCE]); } else - { m_int_configs[CONFIG_PORT_WORLD] = sConfigMgr->GetIntDefault("WorldServerPort", 8085); - m_int_configs[CONFIG_PORT_INSTANCE] = sConfigMgr->GetIntDefault("InstanceServerPort", 8086); - } // Config values are in "milliseconds" but we handle SocketTimeOut only as "seconds" so divide by 1000 m_int_configs[CONFIG_SOCKET_TIMEOUTTIME] = sConfigMgr->GetIntDefault("SocketTimeOutTime", 900000) / 1000; diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 272f608fa3d..ccc2176e0d7 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -237,7 +237,6 @@ enum WorldIntConfigs CONFIG_INTERVAL_CHANGEWEATHER, CONFIG_INTERVAL_DISCONNECT_TOLERANCE, CONFIG_PORT_WORLD, - CONFIG_PORT_INSTANCE, CONFIG_SOCKET_TIMEOUTTIME, CONFIG_SESSION_ADD_DELAY, CONFIG_GAME_TYPE, diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 1fe898e6c1b..a482d109890 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -388,7 +388,6 @@ int main(int argc, char** argv) // Launch the worldserver listener socket uint16 worldPort = uint16(sWorld->getIntConfig(CONFIG_PORT_WORLD)); - uint16 instancePort = uint16(sWorld->getIntConfig(CONFIG_PORT_INSTANCE)); std::string worldListener = sConfigMgr->GetStringDefault("BindIP", "0.0.0.0"); int networkThreads = sConfigMgr->GetIntDefault("Network.Threads", 1); @@ -400,7 +399,7 @@ int main(int argc, char** argv) return 1; } - if (!sWorldSocketMgr.StartWorldNetwork(*ioContext, worldListener, worldPort, instancePort, networkThreads)) + if (!sWorldSocketMgr.StartNetwork(*ioContext, worldListener, worldPort, networkThreads)) { TC_LOG_ERROR("server.worldserver", "Failed to initialize network"); World::StopNow(ERROR_EXIT_CODE); diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 46c3bf6bc7f..800529d753c 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -167,13 +167,6 @@ MaxPingTime = 30 WorldServerPort = 8085 # -# InstanceServerPort -# Description: TCP port to for second world connection. -# Default: 8086 - -InstanceServerPort = 8086 - -# # BindIP # Description: Bind world server to IP/hostname. # Using IPv6 address (such as "::") will enable both IPv4 and IPv6 connections |