diff --git a/Mage.Server/src/main/java/mage/server/ChatSession.java b/Mage.Server/src/main/java/mage/server/ChatSession.java index 9f5bba441f5..cb2aa603999 100644 --- a/Mage.Server/src/main/java/mage/server/ChatSession.java +++ b/Mage.Server/src/main/java/mage/server/ChatSession.java @@ -66,25 +66,29 @@ public class ChatSession { } synchronized public void kill(UUID userId, DisconnectReason reason) { - if (userId != null && clients.containsKey(userId)) { - String userName = clients.get(userId); - logger.debug(userName + " leaves chat: " + chatId); - clients.remove(userId); - String message = null; - switch (reason) { - case Disconnected: - message = " has left XMage"; - break; - case LostConnection: - message = " has lost connection"; - break; - default: - logger.debug(userName + " left chat with reason: " + reason.name() + " " + chatId); - } - if (message != null) { - broadcast(null, new StringBuilder(userName).append(message).toString(), MessageColor.BLUE, true, MessageType.STATUS); - logger.debug(userName + " left chat with reason: " + message + " " + chatId); + try { + if (userId != null && clients.containsKey(userId)) { + String userName = clients.get(userId); + logger.debug((userName == null ? "[null]" :userName) + " leaves chat: " + (chatId == null?"[null]":chatId)); + clients.remove(userId); + String message = null; + switch (reason) { + case Disconnected: + message = " has left XMage"; + break; + case LostConnection: + message = " has lost connection"; + break; + default: + logger.debug(userName + " left chat with reason: " + reason.name() + " " + chatId); + } + if (message != null) { + broadcast(null, new StringBuilder(userName).append(message).toString(), MessageColor.BLUE, true, MessageType.STATUS); + logger.debug(userName + " left chat with reason: " + message + " " + chatId); + } } + } catch(Exception ex) { + logger.fatal(ex); } } diff --git a/Mage.Server/src/main/java/mage/server/UserManager.java b/Mage.Server/src/main/java/mage/server/UserManager.java index efcc7acdd06..64c74c39c93 100644 --- a/Mage.Server/src/main/java/mage/server/UserManager.java +++ b/Mage.Server/src/main/java/mage/server/UserManager.java @@ -155,19 +155,23 @@ public class UserManager { new Runnable() { @Override public void run() { - logger.debug("checkExpired - start"); - Calendar expired = Calendar.getInstance(); - expired.add(Calendar.MINUTE, -3); - List usersToCheck = new ArrayList<>(); - usersToCheck.addAll(users.values()); - for (User user : usersToCheck) { - if (user.isExpired(expired.getTime())) { - logger.info(new StringBuilder(user.getName()).append(": session expired userId: ").append(user.getId()) - .append(" Host: ").append(user.getHost())); - removeUser(user.getId(), DisconnectReason.SessionExpired); + try { + logger.debug("checkExpired - start"); + Calendar expired = Calendar.getInstance(); + expired.add(Calendar.MINUTE, -3); + List usersToCheck = new ArrayList<>(); + usersToCheck.addAll(users.values()); + for (User user : usersToCheck) { + if (user.isExpired(expired.getTime())) { + logger.info(new StringBuilder(user.getName()).append(": session expired userId: ").append(user.getId()) + .append(" Host: ").append(user.getHost())); + removeUser(user.getId(), DisconnectReason.SessionExpired); + } } + logger.debug("checkExpired - end"); + } catch (Exception ex) { + handleException(ex); } - logger.debug("checkExpired - end"); } } );