diff options
author | Shauren <shauren.trinity@gmail.com> | 2020-07-28 19:44:38 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-01-24 13:15:13 +0100 |
commit | d2cde75ab2a3b669ae23fde2338527684626f403 (patch) | |
tree | 73c78cbd5cbf8014cb7e3e9938e8a3a9f3196245 /src | |
parent | f220e46c50301b1d77d321bf6eed5093370a2fef (diff) |
Core/Networking: Fixed authserver socket read handlers being called on incorrect thread
(cherry picked from commit 3ad05386c844438af0dda56bbb46fa665d870c5c)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Server/WorldSocketMgr.cpp | 4 | ||||
-rw-r--r-- | 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; } |