diff options
author | Roopesh Chander <roop@roopc.net> | 2018-11-12 18:16:44 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2018-11-12 19:24:13 +0530 |
commit | c60c29b93cc023c6604c3142fb83b58d3dfd45da (patch) | |
tree | e897ca7d140b3f1e4e338aaa10c6a0804e57ad81 /WireGuard/WireGuard/VPN | |
parent | Tunnel detail: Show VPN-on-demand information (diff) | |
download | wireguard-apple-c60c29b93cc023c6604c3142fb83b58d3dfd45da.tar.xz wireguard-apple-c60c29b93cc023c6604c3142fb83b58d3dfd45da.zip |
Tunnels manager: Need to keep VPN-on-demand tunnels's status under observation
Because they can turn on automatically, even while the app is in the foreground.
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuard/VPN')
-rw-r--r-- | WireGuard/WireGuard/VPN/TunnelsManager.swift | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/WireGuard/WireGuard/VPN/TunnelsManager.swift b/WireGuard/WireGuard/VPN/TunnelsManager.swift index 935036d..307ecfb 100644 --- a/WireGuard/WireGuard/VPN/TunnelsManager.swift +++ b/WireGuard/WireGuard/VPN/TunnelsManager.swift @@ -227,7 +227,14 @@ class TunnelsManager { class TunnelContainer: NSObject { @objc dynamic var name: String @objc dynamic var status: TunnelStatus - @objc dynamic var isActivateOnDemandEnabled: Bool + + @objc dynamic var isActivateOnDemandEnabled: Bool { + didSet { + if (isActivateOnDemandEnabled) { + startObservingTunnelStatus() + } + } + } var onDeactivationComplete: (() -> Void)? @@ -241,7 +248,7 @@ class TunnelContainer: NSObject { self.isActivateOnDemandEnabled = tunnel.isOnDemandEnabled self.tunnelProvider = tunnel super.init() - if (status != .inactive) { + if (status != .inactive || isActivateOnDemandEnabled) { startObservingTunnelStatus() } } @@ -258,7 +265,7 @@ class TunnelContainer: NSObject { let status = TunnelStatus(from: self.tunnelProvider.connection.status) self.status = status self.isActivateOnDemandEnabled = self.tunnelProvider.isOnDemandEnabled - if (status != .inactive) { + if (status != .inactive || isActivateOnDemandEnabled) { startObservingTunnelStatus() } } @@ -375,9 +382,11 @@ class TunnelContainer: NSObject { } s.status = TunnelStatus(from: connection.status) if (s.status == .inactive) { - s.statusObservationToken = nil s.onDeactivationComplete?() s.onDeactivationComplete = nil + if (!s.isActivateOnDemandEnabled) { + s.statusObservationToken = nil + } } } } |