From 1180106c0f0d7c53f9f22b0a8c05858ccbdd73af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20G=C3=B6ster?= Date: Wed, 4 Feb 2026 15:04:43 +0100 Subject: [PATCH] fix(connectivity_plus): Use serial queue for NWPathMonitor to prevent race condition crash --- .../connectivity_plus/PathMonitorConnectivityProvider.swift | 6 +++--- .../connectivity_plus/PathMonitorConnectivityProvider.swift | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/connectivity_plus/connectivity_plus/ios/connectivity_plus/Sources/connectivity_plus/PathMonitorConnectivityProvider.swift b/packages/connectivity_plus/connectivity_plus/ios/connectivity_plus/Sources/connectivity_plus/PathMonitorConnectivityProvider.swift index d7a8252b04..5086ac862f 100644 --- a/packages/connectivity_plus/connectivity_plus/ios/connectivity_plus/Sources/connectivity_plus/PathMonitorConnectivityProvider.swift +++ b/packages/connectivity_plus/connectivity_plus/ios/connectivity_plus/Sources/connectivity_plus/PathMonitorConnectivityProvider.swift @@ -3,9 +3,9 @@ import Network public class PathMonitorConnectivityProvider: NSObject, ConnectivityProvider { - // Use .utility, as it is intended for tasks that the user does not track actively. - // See: https://developer.apple.com/documentation/dispatch/dispatchqos - private let queue = DispatchQueue.global(qos: .utility) + // Use a serial queue to ensure that all network updates and monitor events happen + // sequentially, preventing race conditions during deallocation. + private let queue = DispatchQueue(label: "dev.fluttercommunity.plus.connectivity") private var pathMonitor: NWPathMonitor? diff --git a/packages/connectivity_plus/connectivity_plus/macos/connectivity_plus/Sources/connectivity_plus/PathMonitorConnectivityProvider.swift b/packages/connectivity_plus/connectivity_plus/macos/connectivity_plus/Sources/connectivity_plus/PathMonitorConnectivityProvider.swift index d7a8252b04..5086ac862f 100644 --- a/packages/connectivity_plus/connectivity_plus/macos/connectivity_plus/Sources/connectivity_plus/PathMonitorConnectivityProvider.swift +++ b/packages/connectivity_plus/connectivity_plus/macos/connectivity_plus/Sources/connectivity_plus/PathMonitorConnectivityProvider.swift @@ -3,9 +3,9 @@ import Network public class PathMonitorConnectivityProvider: NSObject, ConnectivityProvider { - // Use .utility, as it is intended for tasks that the user does not track actively. - // See: https://developer.apple.com/documentation/dispatch/dispatchqos - private let queue = DispatchQueue.global(qos: .utility) + // Use a serial queue to ensure that all network updates and monitor events happen + // sequentially, preventing race conditions during deallocation. + private let queue = DispatchQueue(label: "dev.fluttercommunity.plus.connectivity") private var pathMonitor: NWPathMonitor?