mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Network: Simplify worldserver port configuration: removed InstanceServerPort
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -63,13 +63,9 @@ std::array<uint8, 32> const WorldSocket::EncryptionKeySeed = { 0x71, 0xC9, 0xED,
|
||||
0x5D, 0xA1, 0x48, 0xC8, 0x30, 0x47, 0x4A, 0xDE, 0xF6, 0x0D, 0x6C, 0xBE, 0x6F, 0xE4, 0x55, 0x73 };
|
||||
|
||||
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()
|
||||
@@ -246,6 +242,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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -842,16 +842,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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -166,13 +166,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.
|
||||
|
||||
Reference in New Issue
Block a user