aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-07-28 19:44:38 +0200
committerShauren <shauren.trinity@gmail.com>2022-01-24 13:15:13 +0100
commitd2cde75ab2a3b669ae23fde2338527684626f403 (patch)
tree73c78cbd5cbf8014cb7e3e9938e8a3a9f3196245 /src
parentf220e46c50301b1d77d321bf6eed5093370a2fef (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.cpp4
-rw-r--r--src/server/shared/Networking/SocketMgr.h2
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;
}