aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/World
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/World')
-rw-r--r--src/server/game/World/World.cpp38
-rw-r--r--src/server/game/World/World.h1
2 files changed, 9 insertions, 30 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 2e881abccc3..78e113aab48 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -103,7 +103,6 @@
#include "WeatherMgr.h"
#include "WhoListStorage.h"
#include "WorldSession.h"
-#include "WorldSocket.h"
#include "WorldStateMgr.h"
TC_GAME_API std::atomic<bool> World::m_stopEvent(false);
@@ -439,30 +438,6 @@ void World::AddSession_(WorldSession* s)
}
}
-void World::ProcessLinkInstanceSocket(std::pair<std::weak_ptr<WorldSocket>, uint64> linkInfo)
-{
- if (std::shared_ptr<WorldSocket> sock = linkInfo.first.lock())
- {
- if (!sock->IsOpen())
- return;
-
- WorldSession::ConnectToKey key;
- key.Raw = linkInfo.second;
-
- WorldSession* session = FindSession(uint32(key.Fields.AccountId));
- if (!session || session->GetConnectToInstanceKey() != linkInfo.second)
- {
- sock->SendAuthResponseError(ERROR_TIMED_OUT);
- sock->DelayedCloseSocket();
- return;
- }
-
- sock->SetWorldSession(session);
- session->AddInstanceConnection(sock);
- session->HandleContinuePlayerLogin();
- }
-}
-
bool World::HasRecentlyDisconnected(WorldSession* session)
{
if (!session)
@@ -3383,10 +3358,6 @@ void World::SendServerMessage(ServerMessageType messageID, std::string_view stri
void World::UpdateSessions(uint32 diff)
{
- std::pair<std::weak_ptr<WorldSocket>, uint64> linkInfo;
- while (_linkSocketQueue.next(linkInfo))
- ProcessLinkInstanceSocket(std::move(linkInfo));
-
{
TC_METRIC_DETAILED_NO_THRESHOLD_TIMER("world_update_time",
TC_METRIC_TAG("type", "Add sessions"),
@@ -3397,6 +3368,15 @@ void World::UpdateSessions(uint32 diff)
AddSession_(sess);
}
+ {
+ std::pair<std::weak_ptr<WorldSocket>, uint64> linkInfo;
+ while (_linkSocketQueue.next(linkInfo))
+ {
+ WorldSession::ConnectToKey key = { .Raw = linkInfo.second };
+ WorldSession::AddInstanceConnection(FindSession(key.Fields.AccountId), linkInfo.first, key);
+ }
+ }
+
///- Then send an update signal to remaining ones
for (SessionMap::iterator itr = m_sessions.begin(), next; itr != m_sessions.end(); itr = next)
{
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index ccc2176e0d7..710f25666b2 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -880,7 +880,6 @@ class TC_GAME_API World
void AddSession_(WorldSession* s);
LockedQueue<WorldSession*> addSessQueue;
- void ProcessLinkInstanceSocket(std::pair<std::weak_ptr<WorldSocket>, uint64> linkInfo);
LockedQueue<std::pair<std::weak_ptr<WorldSocket>, uint64>> _linkSocketQueue;
// used versions