From 92f03db7a26030a9d62d2b498b3b68024a35fbf9 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 28 Oct 2007 13:04:05 +0000 Subject: [PATCH] Always delay before closing a session. Last part of the fix. --- src/net/common/servergamethread.cpp | 8 ++++---- src/net/common/serverlobbythread.cpp | 9 ++------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/net/common/servergamethread.cpp b/src/net/common/servergamethread.cpp index b3f3f6fb..97f08346 100644 --- a/src/net/common/servergamethread.cpp +++ b/src/net/common/servergamethread.cpp @@ -40,10 +40,10 @@ public: GameSenderCallback(ServerGameThread &server) : m_server(server) {} virtual ~GameSenderCallback() {} - virtual bool GetSocketForSession(SessionId session, SOCKET &outSocket) - { - return m_server.GetSessionManager().GetSocketForSession(session, outSocket); - } + virtual bool GetSocketForSession(SessionId session, SOCKET &outSocket) + { + return m_server.GetSessionManager().GetSocketForSession(session, outSocket); + } virtual void SignalNetError(SessionId /*session*/, int /*errorID*/, int /*osErrorID*/) { // We just ignore send errors for now, on server side. diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 71b986c7..4d9b8932 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -120,9 +120,7 @@ void ServerLobbyThread::RemoveSessionFromGame(SessionWrapper session) { // Just remove the session. Only for fatal errors. - m_gameSessionManager.RemoveSession(session.sessionData->GetId()); - // Update stats (if needed). - BroadcastStatisticsUpdate(); + CloseSessionDelayed(session); } void @@ -312,10 +310,7 @@ ServerLobbyThread::ProcessLoop() } catch (const NetException &) { // On error: Close this session. - m_initTimerSessionMap.erase(session.sessionData->GetId()); - m_sessionManager.RemoveSession(session.sessionData->GetId()); - // Update stats (if needed). - BroadcastStatisticsUpdate(); + CloseSessionDelayed(session); return; } if (packet.get())