diff --git a/src/se/hal/deamon/PCDataSynchronizationClient.java b/src/se/hal/deamon/PCDataSynchronizationClient.java index 47b2b309..04aabfdc 100755 --- a/src/se/hal/deamon/PCDataSynchronizationClient.java +++ b/src/se/hal/deamon/PCDataSynchronizationClient.java @@ -49,6 +49,15 @@ public class PCDataSynchronizationClient implements HalDaemon { ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); ObjectInputStream in = new ObjectInputStream(s.getInputStream()); + // Check server protocol version + int version = in.readInt(); + if(version != PCDataSynchronizationDaemon.PROTOCOL_VERSION){ + logger.warning("Protocol version do not match, skipping user. " + + "(local v"+PCDataSynchronizationDaemon.PROTOCOL_VERSION+" != remote v"+version+")"); + out.writeObject(null); // Tell server we are disconnecting + continue; + } + // Request peer data out.writeObject(new PeerDataReqDTO()); PeerDataRspDTO peerData = (PeerDataRspDTO) in.readObject(); @@ -98,10 +107,7 @@ public class PCDataSynchronizationClient implements HalDaemon { logger.fine("Skipped sensor " + sensor.getId()); } out.writeObject(null); // Tell server we are disconnecting - out.close(); - in.close(); - s.close(); - + } catch (NoRouteToHostException|UnknownHostException|ConnectException e) { logger.warning("Unable to connect to "+ user.getHostname()+":"+user.getPort() +", "+ e.getMessage()); } catch (Exception e) { diff --git a/src/se/hal/deamon/PCDataSynchronizationDaemon.java b/src/se/hal/deamon/PCDataSynchronizationDaemon.java index 94ad74c5..8d4d64b1 100755 --- a/src/se/hal/deamon/PCDataSynchronizationDaemon.java +++ b/src/se/hal/deamon/PCDataSynchronizationDaemon.java @@ -28,6 +28,7 @@ import java.util.logging.Logger; public class PCDataSynchronizationDaemon extends ThreadedTCPNetworkServer implements HalDaemon { private static final Logger logger = LogUtil.getLogger(); + public static final int PROTOCOL_VERSION = 2; public PCDataSynchronizationDaemon() { @@ -71,6 +72,7 @@ public class PCDataSynchronizationDaemon extends ThreadedTCPNetworkServer implem try { Object obj = null; + out.writeInt(PROTOCOL_VERSION); // send our protocol version to client while((obj = in.readObject()) != null){ if(obj instanceof PeerDataReqDTO){ logger.fine("Client requesting peer data");