aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-01-07 13:41:09 +0100
committerOvahlord <dreadkiller@gmx.de>2025-01-09 20:53:27 +0100
commit40696d4754880d9a4f76d46c83728c4ce52a24f2 (patch)
treeae8c75649a890d332499c8bfcaeb44fda387b2e1
parentbceca01ce57f13be0a3597c1852f4e7e4a8084d5 (diff)
Core/Network: Simplify worldserver port configuration: removed InstanceServerPort
(cherry picked from commit 039acb20e4c218757d6b9fc441dc2da6820dafd1)
-rw-r--r--src/common/Utilities/MessageBuffer.h3
-rw-r--r--src/server/bnetserver/Server/SessionManager.cpp2
-rw-r--r--src/server/game/Server/WorldSession.cpp2
-rw-r--r--src/server/game/Server/WorldSocket.cpp10
-rw-r--r--src/server/game/Server/WorldSocketMgr.cpp44
-rw-r--r--src/server/game/Server/WorldSocketMgr.h9
-rw-r--r--src/server/game/World/World.cpp7
-rw-r--r--src/server/game/World/World.h1
-rw-r--r--src/server/worldserver/Main.cpp3
-rw-r--r--src/server/worldserver/worldserver.conf.dist7
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