From 0e55101a16181aa262fb13850b110be182de2dc1 Mon Sep 17 00:00:00 2001 From: Jonathan Schwartz Date: Thu, 22 Jan 2026 21:46:51 +0000 Subject: [PATCH] Device: goOnline: Refactor network locking Only lock known networks. --- device/device.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/device/device.cpp b/device/device.cpp index 16501f3..92386fc 100644 --- a/device/device.cpp +++ b/device/device.cpp @@ -563,24 +563,27 @@ bool Device::goOnline() { if(supportsNetworkMutex()) { assignedClientId = com->getClientIDSync(); if(assignedClientId) { + std::set nets; + for(auto&& net : getSupportedTXNetworks()) { + nets.insert(net.getNetID()); + } // firmware supports clientid/mutex - networkMutexCallbackHandle = lockAllNetworks(std::numeric_limits::max(), std::numeric_limits::max(), NetworkMutexType::Shared, [this](std::shared_ptr message) { - auto netMutexMsg = std::static_pointer_cast(message); - if(netMutexMsg->networks.size() && netMutexMsg->event.has_value()) { - switch(*netMutexMsg->event) { - case NetworkMutexEvent::Acquired: - lockedNetworks.emplace(*netMutexMsg->networks.begin()); - break; - case NetworkMutexEvent::Released: { - auto it = lockedNetworks.find(*netMutexMsg->networks.begin()); - if (it != lockedNetworks.end()) - lockedNetworks.erase(it); - break; - } + networkMutexCallbackHandle = lockNetworks(nets, std::numeric_limits::max(), std::numeric_limits::max(), NetworkMutexType::Shared, [this](std::shared_ptr message) { + auto netMutexMsg = std::static_pointer_cast(message); + if(netMutexMsg->networks.size() && netMutexMsg->event.has_value()) { + switch(*netMutexMsg->event) { + case NetworkMutexEvent::Acquired: + lockedNetworks.emplace(*netMutexMsg->networks.begin()); + break; + case NetworkMutexEvent::Released: { + auto it = lockedNetworks.find(*netMutexMsg->networks.begin()); + if (it != lockedNetworks.end()) + lockedNetworks.erase(it); + break; } } } - ); + }); } }