aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/VPN
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2018-11-12 18:16:44 +0530
committerRoopesh Chander <roop@roopc.net>2018-11-12 19:24:13 +0530
commitc60c29b93cc023c6604c3142fb83b58d3dfd45da (patch)
treee897ca7d140b3f1e4e338aaa10c6a0804e57ad81 /WireGuard/WireGuard/VPN
parentTunnel detail: Show VPN-on-demand information (diff)
downloadwireguard-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.swift17
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
+ }
}
}
}