aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-11-03 06:22:57 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2018-11-03 06:22:57 +0100
commit6405b769411323bac315dd7cb9247b625e29001e (patch)
treeb259b09b2a6959a5b4e9e6818490d299ab501708 /WireGuard
parentTunnelsManager: do not change back to inactive if we are resolving the endpoint (diff)
downloadwireguard-apple-6405b769411323bac315dd7cb9247b625e29001e.tar.xz
wireguard-apple-6405b769411323bac315dd7cb9247b625e29001e.zip
TunnelsManager: do not track currentTunnel
It's error prone and does not give us anything. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'WireGuard')
-rw-r--r--WireGuard/WireGuard/VPN/TunnelsManager.swift39
1 files changed, 6 insertions, 33 deletions
diff --git a/WireGuard/WireGuard/VPN/TunnelsManager.swift b/WireGuard/WireGuard/VPN/TunnelsManager.swift
index eb69ccd..2aa415a 100644
--- a/WireGuard/WireGuard/VPN/TunnelsManager.swift
+++ b/WireGuard/WireGuard/VPN/TunnelsManager.swift
@@ -38,23 +38,8 @@ class TunnelsManager {
private var isModifyingTunnel: Bool = false
private var isDeletingTunnel: Bool = false
- private var currentTunnel: TunnelContainer?
- private var currentTunnelStatusObservationToken: AnyObject?
-
init(tunnelProviders: [NETunnelProviderManager]) {
- var tunnels = tunnelProviders.map { TunnelContainer(tunnel: $0) }
- tunnels.sort { $0.name < $1.name }
- var currentTunnel: TunnelContainer? = nil
- for tunnel in tunnels {
- if (tunnel.status != .inactive) {
- currentTunnel = tunnel
- break
- }
- }
- self.tunnels = tunnels
- if let currentTunnel = currentTunnel {
- setCurrentTunnel(tunnel: currentTunnel)
- }
+ self.tunnels = tunnelProviders.map { TunnelContainer(tunnel: $0) }.sorted { $0.name < $1.name }
}
static func create(completionHandler: @escaping (TunnelsManager?) -> Void) {
@@ -203,11 +188,12 @@ class TunnelsManager {
completionHandler(TunnelActivationError.attemptingActivationWhenTunnelIsNotInactive)
return
}
- guard (currentTunnel == nil) else {
- completionHandler(TunnelActivationError.attemptingActivationWhenAnotherTunnelIsBusy(otherTunnelStatus: currentTunnel!.status))
- return
+ for t in tunnels {
+ if t.status != .inactive {
+ completionHandler(TunnelActivationError.attemptingActivationWhenAnotherTunnelIsBusy(otherTunnelStatus: t.status))
+ return
+ }
}
- setCurrentTunnel(tunnel: tunnel)
tunnel.startActivation(completionHandler: completionHandler)
}
@@ -216,21 +202,8 @@ class TunnelsManager {
completionHandler(TunnelActivationError.attemptingDeactivationWhenTunnelIsInactive)
return
}
- assert(tunnel == currentTunnel!)
-
tunnel.startDeactivation()
}
-
- private func setCurrentTunnel(tunnel: TunnelContainer) {
- currentTunnel = tunnel
- currentTunnelStatusObservationToken = tunnel.observe(\.status) { [weak self] (tunnel, change) in
- guard let s = self else { return }
- if (tunnel.status == .inactive) {
- s.currentTunnel = nil
- s.currentTunnelStatusObservationToken = nil
- }
- }
- }
}
extension NETunnelProviderProtocol {