From d2cde75ab2a3b669ae23fde2338527684626f403 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 28 Jul 2020 19:44:38 +0200 Subject: [PATCH] Core/Networking: Fixed authserver socket read handlers being called on incorrect thread (cherry picked from commit 3ad05386c844438af0dda56bbb46fa665d870c5c) --- src/server/game/Server/WorldSocketMgr.cpp | 4 ++-- src/server/shared/Networking/SocketMgr.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/server/game/Server/WorldSocketMgr.cpp b/src/server/game/Server/WorldSocketMgr.cpp index bf3f5c9a315..75299c6f3ce 100644 --- a/src/server/game/Server/WorldSocketMgr.cpp +++ b/src/server/game/Server/WorldSocketMgr.cpp @@ -92,13 +92,13 @@ bool WorldSocketMgr::StartWorldNetwork(Trinity::Asio::IoContext& ioContext, std: if (!instanceAcceptor->Bind()) { TC_LOG_ERROR("network", "StartNetwork failed to bind instance socket acceptor"); + delete instanceAcceptor; return false; } _instanceAcceptor = instanceAcceptor; - _acceptor->SetSocketFactory(std::bind(&BaseSocketMgr::GetSocketForAccept, this)); - _instanceAcceptor->SetSocketFactory(std::bind(&BaseSocketMgr::GetSocketForAccept, this)); + _instanceAcceptor->SetSocketFactory([this]() { return GetSocketForAccept(); }); _acceptor->AsyncAcceptWithCallback<&OnSocketAccept>(); _instanceAcceptor->AsyncAcceptWithCallback<&OnSocketAccept>(); diff --git a/src/server/shared/Networking/SocketMgr.h b/src/server/shared/Networking/SocketMgr.h index 64f064aadf2..0aa443f4cc8 100644 --- a/src/server/shared/Networking/SocketMgr.h +++ b/src/server/shared/Networking/SocketMgr.h @@ -66,6 +66,8 @@ public: for (int32 i = 0; i < _threadCount; ++i) _threads[i].Start(); + _acceptor->SetSocketFactory([this]() { return GetSocketForAccept(); }); + return true; }