From 5305013065d218963a58d4fdc68017325124e42d Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 5 Feb 2019 23:32:06 +0100 Subject: [PATCH] make shorter but more attempts to ping --- networkdetector/devicemonitor.cpp | 7 +++++-- networkdetector/devicemonitor.h | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/networkdetector/devicemonitor.cpp b/networkdetector/devicemonitor.cpp index 1df86b72..cb4d1200 100644 --- a/networkdetector/devicemonitor.cpp +++ b/networkdetector/devicemonitor.cpp @@ -61,7 +61,7 @@ void DeviceMonitor::ping() return; } - m_pingProcess->start("arping", {"-I", targetInterface.name(), "-f", "-w", "180", m_host->address()}); + m_pingProcess->start("arping", {"-I", targetInterface.name(), "-f", "-w", "90", m_host->address()}); } void DeviceMonitor::arpLookupFinished(int exitCode) @@ -97,6 +97,7 @@ void DeviceMonitor::arpLookupFinished(int exitCode) } // If we have a reachable entry, stop processing here needsPing = false; + m_failedPings = 0; break; } else { // ARP claims the device to be stale... Flagging device to require a ping. @@ -138,9 +139,11 @@ void DeviceMonitor::pingFinished(int exitCode) emit reachableChanged(true); } emit seen(); + m_failedPings = 0; } else { qCDebug(dcNetworkDetector()) << "Could not ping device" << m_host->macAddress() << m_host->address(); - if (m_host->reachable()) { + m_failedPings++; + if (m_failedPings > 3 && m_host->reachable()) { m_host->setReachable(false); emit reachableChanged(false); } diff --git a/networkdetector/devicemonitor.h b/networkdetector/devicemonitor.h index 28fce3bd..b3764ea5 100644 --- a/networkdetector/devicemonitor.h +++ b/networkdetector/devicemonitor.h @@ -33,6 +33,7 @@ private: Host *m_host; QProcess *m_arpLookupProcess; QProcess *m_pingProcess; + int m_failedPings = 0; };