From dae11725f8814a8fe5fe6cad7116424ad85d0e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Tue, 1 Oct 2024 14:58:02 +0200 Subject: [PATCH] NetworkDeviceDiscovery: Fix reachable changed before the network address is known --- .../hardware/network/networkdevicediscoveryimpl.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libnymea-core/hardware/network/networkdevicediscoveryimpl.cpp b/libnymea-core/hardware/network/networkdevicediscoveryimpl.cpp index b3cc0370..8d495cc6 100644 --- a/libnymea-core/hardware/network/networkdevicediscoveryimpl.cpp +++ b/libnymea-core/hardware/network/networkdevicediscoveryimpl.cpp @@ -602,7 +602,7 @@ void NetworkDeviceDiscoveryImpl::evaluateMonitor(NetworkDeviceMonitorImpl *monit requiresRefresh = true; } - if (!requiresRefresh && currentDateTime <= monitor->lastSeen().addSecs(m_monitorInterval)) { + if (!requiresRefresh && monitor->networkDeviceInfo().isComplete() && currentDateTime <= monitor->lastSeen().addSecs(m_monitorInterval)) { // We have seen this device within the last minute, make sure the monitor is reachable monitor->setReachable(true); return; @@ -655,7 +655,6 @@ void NetworkDeviceDiscoveryImpl::processArpTraffic(const QNetworkInterface &inte NetworkDeviceMonitorImpl *monitor = m_monitors.value(macAddress); if (monitor) { monitor->setLastSeen(now); - monitor->setReachable(true); if (monitor->networkDeviceInfo().address() != address) { NetworkDeviceInfo info = monitor->networkDeviceInfo(); info.setAddress(address); @@ -663,6 +662,10 @@ void NetworkDeviceDiscoveryImpl::processArpTraffic(const QNetworkInterface &inte qCDebug(dcNetworkDeviceDiscovery()) << "NetworkDeviceMonitor" << monitor << "ip address changed"; emit monitor->networkDeviceInfoChanged(monitor->networkDeviceInfo()); } + + if (monitor->networkDeviceInfo().isComplete()) { + monitor->setReachable(true); + } } // Check if we have currently reply running