From dd163a797ee3f6ac2c6e15fbd6a125a6202a1674 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Sat, 18 Mar 2017 18:20:29 +0100 Subject: [PATCH] Trying to fix consistent netscan pings --- src/se/hal/plugin/netscan/NetScanController.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/se/hal/plugin/netscan/NetScanController.java b/src/se/hal/plugin/netscan/NetScanController.java index f7f4be42..9019a528 100755 --- a/src/se/hal/plugin/netscan/NetScanController.java +++ b/src/se/hal/plugin/netscan/NetScanController.java @@ -69,15 +69,14 @@ public class NetScanController implements HalEventController, HalAutoScannableCo SwitchEventData prevData = entry.getValue(); if (listener != null) { //logger.finest("Pinging IP "+ device.getHost()); - SwitchEventData newData = new SwitchEventData( - InetScanner.isReachable(device.getHost(), executor), - System.currentTimeMillis()); - entry.setValue(newData); + boolean ping1 = InetScanner.isReachable(device.getHost(), executor); + boolean ping2 = InetScanner.isReachable(device.getHost(), executor); // Should we report? if (prevData == null || - (!prevData.isOn() && newData.isOn()) || - (!prevData.isOn() && !newData.isOn()) ) { // require two off measurements to report off + (ping1 == ping2 && prevData.isOn() != ping1)) { // only store if we get consistent pings + SwitchEventData newData = new SwitchEventData(ping1, System.currentTimeMillis()); + entry.setValue(newData); logger.fine("IP "+device.getHost() +" state has changed to "+ newData.isOn()); listener.reportReceived(device, newData); }