NetworkDeviceDiscovery: Fix reachable changed before the network address is known

pull/683/head
Simon Stürz 2024-10-01 14:58:02 +02:00
parent 02d0ebb152
commit dae11725f8
1 changed files with 5 additions and 2 deletions

View File

@ -602,7 +602,7 @@ void NetworkDeviceDiscoveryImpl::evaluateMonitor(NetworkDeviceMonitorImpl *monit
requiresRefresh = true; 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 // We have seen this device within the last minute, make sure the monitor is reachable
monitor->setReachable(true); monitor->setReachable(true);
return; return;
@ -655,7 +655,6 @@ void NetworkDeviceDiscoveryImpl::processArpTraffic(const QNetworkInterface &inte
NetworkDeviceMonitorImpl *monitor = m_monitors.value(macAddress); NetworkDeviceMonitorImpl *monitor = m_monitors.value(macAddress);
if (monitor) { if (monitor) {
monitor->setLastSeen(now); monitor->setLastSeen(now);
monitor->setReachable(true);
if (monitor->networkDeviceInfo().address() != address) { if (monitor->networkDeviceInfo().address() != address) {
NetworkDeviceInfo info = monitor->networkDeviceInfo(); NetworkDeviceInfo info = monitor->networkDeviceInfo();
info.setAddress(address); info.setAddress(address);
@ -663,6 +662,10 @@ void NetworkDeviceDiscoveryImpl::processArpTraffic(const QNetworkInterface &inte
qCDebug(dcNetworkDeviceDiscovery()) << "NetworkDeviceMonitor" << monitor << "ip address changed"; qCDebug(dcNetworkDeviceDiscovery()) << "NetworkDeviceMonitor" << monitor << "ip address changed";
emit monitor->networkDeviceInfoChanged(monitor->networkDeviceInfo()); emit monitor->networkDeviceInfoChanged(monitor->networkDeviceInfo());
} }
if (monitor->networkDeviceInfo().isComplete()) {
monitor->setReachable(true);
}
} }
// Check if we have currently reply running // Check if we have currently reply running