From 9263325f18ae53b787df3701b9de8c0de03d590e Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 26 Jul 2023 17:10:59 -0400 Subject: [PATCH] CommissioningWindowManager should only listen for platform events when a commissioning window is open. Right now, a CommissioningWindowManager starts listening for platform events if a commissioning window is opened, and then never stops. That means it can end up reacting to fail-safe expirations that have nothing to do with a commissioning window (e.g. CASE updates of state that needs a fail-safe). The fix is to not listen for platform events if the commissioning window is closed. --- src/app/server/CommissioningWindowManager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/server/CommissioningWindowManager.cpp b/src/app/server/CommissioningWindowManager.cpp index b8fb6a54e6e629..c6287ab119e67d 100644 --- a/src/app/server/CommissioningWindowManager.cpp +++ b/src/app/server/CommissioningWindowManager.cpp @@ -129,6 +129,8 @@ void CommissioningWindowManager::ResetState() DeviceLayer::SystemLayer().CancelTimer(HandleCommissioningWindowTimeout, this); mCommissioningTimeoutTimerArmed = false; + + DeviceLayer::PlatformMgr().RemoveEventHandler(OnPlatformEventWrapper, reinterpret_cast(this)); } void CommissioningWindowManager::Cleanup()