From ebf9409c18212b784e071f6141a3cfd9a94837d7 Mon Sep 17 00:00:00 2001 From: Kyle Schwarz Date: Thu, 30 Oct 2025 11:18:12 -0400 Subject: [PATCH] Device: Guard mutex usage --- device/device.cpp | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/device/device.cpp b/device/device.cpp index 3dec8a5..ddf3f23 100644 --- a/device/device.cpp +++ b/device/device.cpp @@ -554,26 +554,28 @@ bool Device::goOnline() { return false; } - assignedClientId = com->getClientIDSync(); - if(assignedClientId) { - // 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; + if(supportsNetworkMutex()) { + assignedClientId = com->getClientIDSync(); + if(assignedClientId) { + // 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; + } } } } - } - ); + ); + } } // (re)start the keeponline