aboutsummaryrefslogtreecommitdiff
path: root/src/server/bnetserver/Server/SessionManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/bnetserver/Server/SessionManager.cpp')
-rw-r--r--src/server/bnetserver/Server/SessionManager.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/bnetserver/Server/SessionManager.cpp b/src/server/bnetserver/Server/SessionManager.cpp
index 9e5836dab8d..6c52ee477f1 100644
--- a/src/server/bnetserver/Server/SessionManager.cpp
+++ b/src/server/bnetserver/Server/SessionManager.cpp
@@ -46,7 +46,11 @@ void Battlenet::SessionManager::AddSession(Session* session)
void Battlenet::SessionManager::RemoveSession(Session* session)
{
std::unique_lock<boost::shared_mutex> lock(_sessionMutex);
- _sessions.erase({ session->GetAccountId(), session->GetGameAccountId() });
+ auto itr = _sessions.find({ session->GetAccountId(), session->GetGameAccountId() });
+ // Remove old session only if it was not overwritten by reconnecting
+ if (itr != _sessions.end() && itr->second == session)
+ _sessions.erase(itr);
+
_sessionsByAccountId[session->GetAccountId()].remove(session);
}