From c7ae032d5afd748bb491af5b081d3be47aa4e00f Mon Sep 17 00:00:00 2001 From: magenoxx Date: Wed, 22 Jun 2011 20:35:16 +0400 Subject: [PATCH] Fixed possible NPE between callbacks (as client and server are not synchronized between calls) --- .../src/mage/interfaces/callback/CallbackClientDaemon.java | 4 +++- Mage.Server/src/main/java/mage/server/ServerImpl.java | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Mage.Common/src/mage/interfaces/callback/CallbackClientDaemon.java b/Mage.Common/src/mage/interfaces/callback/CallbackClientDaemon.java index 95a6ecdc40b..b643f570f9c 100644 --- a/Mage.Common/src/mage/interfaces/callback/CallbackClientDaemon.java +++ b/Mage.Common/src/mage/interfaces/callback/CallbackClientDaemon.java @@ -64,7 +64,9 @@ public class CallbackClientDaemon extends Thread { @Override public void run() { try { - client.processCallback(callback); + if (callback != null) { + client.processCallback(callback); + } } catch (Exception ex) { logger.fatal("CallbackClientDaemon error ", ex); diff --git a/Mage.Server/src/main/java/mage/server/ServerImpl.java b/Mage.Server/src/main/java/mage/server/ServerImpl.java index 7b8852c4157..be7798e7993 100644 --- a/Mage.Server/src/main/java/mage/server/ServerImpl.java +++ b/Mage.Server/src/main/java/mage/server/ServerImpl.java @@ -101,7 +101,11 @@ public class ServerImpl extends RemoteServer implements Server { @Override public ClientCallback callback(UUID sessionId) { - return SessionManager.getInstance().getSession(sessionId).callback(); + Session session = SessionManager.getInstance().getSession(sessionId); + if (session == null) { + return null; + } + return session.callback(); } @Override