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