From 4244915722fd2d2e2d986acb8c5223626c5eed4d Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Fri, 9 Sep 2022 09:58:33 -0400 Subject: [PATCH] Mark MTRDeviceController as not running before shutting down the DeviceCommissioner. (#22490) Fixes https://github.com/project-chip/connectedhomeip/issues/22488 --- src/darwin/Framework/CHIP/MTRDeviceController.mm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index e811579fcbd32f..d5365145da9821 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -148,9 +148,13 @@ - (void)cleanupAfterStartup - (void)shutDownCppController { if (_cppCommissioner) { - _cppCommissioner->Shutdown(); - delete _cppCommissioner; + auto * commissionerToShutDown = _cppCommissioner; + // Flag ourselves as not running before we start shutting down + // _cppCommissioner, so we're not in a state where we claim to be + // running but are actually partially shut down. _cppCommissioner = nullptr; + commissionerToShutDown->Shutdown(); + delete commissionerToShutDown; if (_operationalCredentialsDelegate != nil) { _operationalCredentialsDelegate->SetDeviceCommissioner(nullptr); }