diff options
Diffstat (limited to 'src/server/bnetserver/Server/SessionManager.cpp')
-rw-r--r-- | src/server/bnetserver/Server/SessionManager.cpp | 6 |
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); } |