[Darwin] Fix MTRDeviceConnectivityMonitor DNSServiceRefDeallocate call on the correct queue (#33410)
diff --git a/src/darwin/Framework/CHIP/MTRDeviceConnectivityMonitor.mm b/src/darwin/Framework/CHIP/MTRDeviceConnectivityMonitor.mm
index 229d95d..80ad6f8 100644
--- a/src/darwin/Framework/CHIP/MTRDeviceConnectivityMonitor.mm
+++ b/src/darwin/Framework/CHIP/MTRDeviceConnectivityMonitor.mm
@@ -271,8 +271,11 @@
- (void)stopMonitoring
{
- MTR_LOG_INFO("%@ stop connectivity monitoring for %@", self, _instanceName);
- std::lock_guard lock(sConnectivityMonitorLock);
- [self _stopMonitoring];
+ // DNSServiceRefDeallocate must be called on the same queue set on the shared connection.
+ dispatch_async(sSharedResolverQueue, ^{
+ MTR_LOG_INFO("%@ stop connectivity monitoring for %@", self, self->_instanceName);
+ std::lock_guard lock(sConnectivityMonitorLock);
+ [self _stopMonitoring];
+ });
}
@end