sdt.home.lifx: fix stop/start bundle issue in LAN mode.
Add timeout on datagram socket.
Patch proposed by Andreas Kraft (DT)
Signed-off-by: BOLLE Sebastien <sebastien.bolle@orange.com>
Signed-off-by: BONNARDEL Gregory <gbonnardel.ext@orange.com>
diff --git a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.lifx/src/main/java/org/eclipse/om2m/sdt/home/lifx/impl/lan/Server.java b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.lifx/src/main/java/org/eclipse/om2m/sdt/home/lifx/impl/lan/Server.java
index 91593f1..9438f46 100644
--- a/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.lifx/src/main/java/org/eclipse/om2m/sdt/home/lifx/impl/lan/Server.java
+++ b/org.eclipse.om2m.sdt/org.eclipse.om2m.sdt.home.lifx/src/main/java/org/eclipse/om2m/sdt/home/lifx/impl/lan/Server.java
@@ -8,6 +8,7 @@
package org.eclipse.om2m.sdt.home.lifx.impl.lan;
import java.io.IOException;
+import java.net.SocketTimeoutException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
@@ -57,10 +58,12 @@
public void init(InetAddress pLocalInetAddress) {
try {
+ toBeStopped = false;
localInetAddress = pLocalInetAddress;
datagramSocket = new DatagramSocket(56700, localInetAddress);
datagramSocket.setReuseAddress(true);
-
+ datagramSocket.setSoTimeout(1000); // 1 s timeout on the datagram socket
+
} catch (Exception e) {
e.printStackTrace();
@@ -75,7 +78,7 @@
}
public void stopServer() {
- if (toBeStopped != false) {
+ if (toBeStopped == false) {
toBeStopped = true;
datagramSocket.disconnect();
datagramSocket.close();
@@ -84,6 +87,7 @@
serverThread.join();
} catch (InterruptedException e) {
}
+ Logger.getInstance().info(Server.class, "DatagramSocket closed");
}
@@ -102,12 +106,13 @@
Thread t = new Thread(rph);
t.start();
+ } catch (SocketTimeoutException e) {
+ // ignore
} catch (Exception e) {
e.printStackTrace();
}
-
- }
+ }
}
protected void notify(LIFXGlobalFrame globalFrame) {