From a82e9bfa64a96590d88be4979dbf83649735c2c8 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 21 Nov 2014 18:54:04 +0100 Subject: [PATCH] * Admin console - Forced cancel user session . --- .../main/java/mage/server/SessionManager.java | 50 ++++++++++--------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/Mage.Server/src/main/java/mage/server/SessionManager.java b/Mage.Server/src/main/java/mage/server/SessionManager.java index d3199830d67..8615fb063d5 100644 --- a/Mage.Server/src/main/java/mage/server/SessionManager.java +++ b/Mage.Server/src/main/java/mage/server/SessionManager.java @@ -114,31 +114,33 @@ public class SessionManager { public void disconnect(String sessionId, DisconnectReason reason) { Session session = sessions.get(sessionId); if (session != null) { - synchronized (session) { - if (!sessions.containsKey(sessionId)) { - // session was removed meanwhile by another thread so we can return - return; - } - sessions.remove(sessionId); - switch (reason) { - case Disconnected: - session.kill(reason); - LogServiceImpl.instance.log(LogKeys.KEY_SESSION_KILLED, sessionId); - break; - case SessionExpired: - session.kill(reason); - LogServiceImpl.instance.log(LogKeys.KEY_SESSION_EXPIRED, sessionId); - break; - case AdminDisconnect: - session.kill(reason); - break; - case LostConnection: - session.userLostConnection(); - LogServiceImpl.instance.log(LogKeys.KEY_SESSION_DISCONNECTED, sessionId); - break; - default: - logger.error("endSession: unexpected reason " + reason.toString() + " - sessionId: "+ sessionId); + if (!reason.equals(DisconnectReason.AdminDisconnect)) { + synchronized (session) { + if (!sessions.containsKey(sessionId)) { + // session was removed meanwhile by another thread so we can return + return; + } + sessions.remove(sessionId); + switch (reason) { + case Disconnected: + session.kill(reason); + LogServiceImpl.instance.log(LogKeys.KEY_SESSION_KILLED, sessionId); + break; + case SessionExpired: + session.kill(reason); + LogServiceImpl.instance.log(LogKeys.KEY_SESSION_EXPIRED, sessionId); + break; + case LostConnection: + session.userLostConnection(); + LogServiceImpl.instance.log(LogKeys.KEY_SESSION_DISCONNECTED, sessionId); + break; + default: + logger.error("endSession: unexpected reason " + reason.toString() + " - sessionId: "+ sessionId); + } } + } else { + sessions.remove(sessionId); + session.kill(reason); } }