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
}
fileprivate var tunnelProvider: NETunnelProviderManager {
didSet {
- isActivateOnDemandEnabled = tunnelProvider.isOnDemandEnabled
+ isActivateOnDemandEnabled = tunnelProvider.isOnDemandEnabled && tunnelProvider.isEnabled
hasOnDemandRules = !(tunnelProvider.onDemandRules ?? []).isEmpty
}
}
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()