From 8db3a6c62377032426e933e733d4177265fb3fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Bigaret?= <sebastien.bigaret@telecom-bretagne.eu> Date: Fri, 12 Feb 2016 16:42:20 +0100 Subject: [PATCH] Fixed: on the server side RMIComm.Facade#connected() was not called As a result, the disconnect() counterpart was always ignored, which prevented a client that has been previously brutally disconnected (no notifiction to the server) to be unable to reconnect anymore, until the server was restarted! --- .../praxis/common/events/CommunicationFacade.java | 12 ++++++++++++ .../praxis/common/events/RMICommunicationFacade.java | 1 + 2 files changed, 13 insertions(+) diff --git a/src/eu/telecom_bretagne/praxis/common/events/CommunicationFacade.java b/src/eu/telecom_bretagne/praxis/common/events/CommunicationFacade.java index 3ac76efb..8863630e 100644 --- a/src/eu/telecom_bretagne/praxis/common/events/CommunicationFacade.java +++ b/src/eu/telecom_bretagne/praxis/common/events/CommunicationFacade.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.Semaphore; +import eu.telecom_bretagne.praxis.common.Log; import eu.telecom_bretagne.praxis.common.events.Event.IncompatibleListenerException; @@ -198,7 +199,11 @@ public abstract class CommunicationFacade protected synchronized void connected() { if ( connected ) + { + Log.log.finest("Already connected"); return; + } + Log.log.finest("connected, notifying listeners"); connected = true; event_listeners_modification_semaphore.acquireUninterruptibly(); ArrayList<EventListener> event_listeners_copy; @@ -211,7 +216,10 @@ public abstract class CommunicationFacade event_listeners_modification_semaphore.release(); } for (EventListener listener: event_listeners_copy) + { + Log.log.finest("connected, notifying listener "+listener.toString()); listener.connected(); + } } @@ -222,8 +230,12 @@ public abstract class CommunicationFacade */ protected synchronized void disconnect(Exception reason) { + Log.log.finest("disconnect reason:"+(reason!=null?reason.toString():"<null>")); if ( ! connected ) + { + Log.log.finest("already disconnected, nothing to do"); return; + } connected = false; event_listeners_modification_semaphore.acquireUninterruptibly(); diff --git a/src/eu/telecom_bretagne/praxis/common/events/RMICommunicationFacade.java b/src/eu/telecom_bretagne/praxis/common/events/RMICommunicationFacade.java index 35bb9da4..4563dbdc 100644 --- a/src/eu/telecom_bretagne/praxis/common/events/RMICommunicationFacade.java +++ b/src/eu/telecom_bretagne/praxis/common/events/RMICommunicationFacade.java @@ -191,6 +191,7 @@ public class RMICommunicationFacade } RMICommunicationFacade c = new RMICommunicationFacade(clientIP); new Server(c); + c.connected(); return CNX.buildCNX(c, Configuration.getBoolean("rmi.useSSL")); } } -- GitLab