]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
UI: Consider on-demand to be enabled iff the tunnel provider is enabled
authorRoopesh Chander <roop@roopc.net>
Tue, 3 Aug 2021 11:05:18 +0000 (16:35 +0530)
committerRoopesh Chander <roop@roopc.net>
Tue, 3 Aug 2021 11:05:18 +0000 (16:35 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
Sources/WireGuardApp/Tunnel/TunnelsManager.swift

index c6d4f2dead42a6d27996b72b7971345b7d7770d8..2865f7aef47af3b1f4a51b92496b057090da80b5 100644 (file)
@@ -344,7 +344,8 @@ class TunnelsManager {
 
     func setOnDemandEnabled(_ isOnDemandEnabled: Bool, on tunnel: TunnelContainer, completionHandler: @escaping (TunnelsManagerError?) -> Void) {
         let tunnelProviderManager = tunnel.tunnelProvider
-        guard tunnelProviderManager.isOnDemandEnabled != isOnDemandEnabled else {
+        let isCurrentlyEnabled = (tunnelProviderManager.isOnDemandEnabled && tunnelProviderManager.isEnabled)
+        guard isCurrentlyEnabled != isOnDemandEnabled else {
             completionHandler(nil)
             return
         }
@@ -571,7 +572,7 @@ class TunnelContainer: NSObject {
 
     fileprivate var tunnelProvider: NETunnelProviderManager {
         didSet {
-            isActivateOnDemandEnabled = tunnelProvider.isOnDemandEnabled
+            isActivateOnDemandEnabled = tunnelProvider.isOnDemandEnabled && tunnelProvider.isEnabled
             hasOnDemandRules = !(tunnelProvider.onDemandRules ?? []).isEmpty
         }
     }
@@ -594,7 +595,7 @@ class TunnelContainer: NSObject {
         name = tunnel.localizedDescription ?? "Unnamed"
         let status = TunnelStatus(from: tunnel.connection.status)
         self.status = status
-        isActivateOnDemandEnabled = tunnel.isOnDemandEnabled
+        isActivateOnDemandEnabled = tunnel.isOnDemandEnabled && tunnel.isEnabled
         hasOnDemandRules = !(tunnel.onDemandRules ?? []).isEmpty
         tunnelProvider = tunnel
         super.init()