mirror of https://github.com/nymea/nymea.git
NetworkDeviceDiscovery: Fix reachable changed before the network address is known
parent
02d0ebb152
commit
dae11725f8
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue