Fix a bug in thread network telemetry.
-- In the Generic Thread Stack Manager Impl using OpenThread,
thread stack was not unlocked before returning from an error encountered
while gathering telemetry related information using openthread APIs.
diff --git a/src/adaptations/device-layer/include/Weave/DeviceLayer/OpenThread/GenericThreadStackManagerImpl_OpenThread.ipp b/src/adaptations/device-layer/include/Weave/DeviceLayer/OpenThread/GenericThreadStackManagerImpl_OpenThread.ipp
index 081e2fd..3e7bd9d 100644
--- a/src/adaptations/device-layer/include/Weave/DeviceLayer/OpenThread/GenericThreadStackManagerImpl_OpenThread.ipp
+++ b/src/adaptations/device-layer/include/Weave/DeviceLayer/OpenThread/GenericThreadStackManagerImpl_OpenThread.ipp
@@ -721,9 +721,9 @@
eventId = nl::LogEvent(&counterEvent);
WeaveLogProgress(DeviceLayer, "OpenThread Telemetry Stats Event Id: %u", eventId);
+exit:
Impl()->UnlockThreadStack();
-exit:
return err;
}
@@ -778,9 +778,9 @@
eventId = nl::LogEvent(&topologyEvent);
WeaveLogProgress(DeviceLayer, "OpenThread Telemetry Stats Event Id: %u", eventId);
+exit:
Impl()->UnlockThreadStack();
-exit:
if (err != WEAVE_NO_ERROR)
{
WeaveLogError(DeviceLayer, "GetAndLogThreadTopologyMinimal failed: %s", nl::ErrorStr(err));
@@ -986,9 +986,9 @@
WeaveLogProgress(DeviceLayer, "OpenThread Neighbor TopoEntry[%u] Event Id: %ld", i, eventId);
}
+exit:
Impl()->UnlockThreadStack();
-exit:
if (err != WEAVE_NO_ERROR)
{
WeaveLogError(DeviceLayer, "GetAndLogThreadTopologyFull failed: %s", nl::ErrorStr(err));