aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/VPN
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2018-10-28 17:46:18 +0530
committerRoopesh Chander <roop@roopc.net>2018-10-28 17:47:01 +0530
commit269a6c371986b5e7208e9d6ed1523873c9e936dd (patch)
tree08a8ad380365025f2c45861c947e56684093121a /WireGuard/WireGuard/VPN
parentVPN: DNSResolver: Resolve multiple endpoints in parallel (diff)
downloadwireguard-apple-269a6c371986b5e7208e9d6ed1523873c9e936dd.tar.xz
wireguard-apple-269a6c371986b5e7208e9d6ed1523873c9e936dd.zip
VPN: Remove ability to deactivate the tunnel while resolving DNS
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuard/VPN')
-rw-r--r--WireGuard/WireGuard/VPN/TunnelsManager.swift20
1 files changed, 7 insertions, 13 deletions
diff --git a/WireGuard/WireGuard/VPN/TunnelsManager.swift b/WireGuard/WireGuard/VPN/TunnelsManager.swift
index 2bbbac2..37b4b90 100644
--- a/WireGuard/WireGuard/VPN/TunnelsManager.swift
+++ b/WireGuard/WireGuard/VPN/TunnelsManager.swift
@@ -13,7 +13,6 @@ protocol TunnelsManagerDelegate: class {
enum TunnelsManagerError: Error {
case dnsResolutionFailed
- case dnsResolutionCancelled
case tunnelOperationFailed
case attemptingActivationWhenAnotherTunnelIsActive
case attemptingActivationWhenTunnelIsNotInactive
@@ -252,16 +251,13 @@ class TunnelContainer: NSObject {
status = .resolvingEndpointDomains
dnsResolver.resolve { [weak self] endpoints in
guard let s = self else { return }
- if (s.dnsResolver == nil) {
- s.status = .inactive
- completionHandler(TunnelsManagerError.dnsResolutionCancelled)
- return
- }
+ assert(s.status == .resolvingEndpointDomains)
+ s.dnsResolver = nil
guard let endpoints = endpoints else {
completionHandler(TunnelsManagerError.dnsResolutionFailed)
+ s.status = .inactive
return
}
- s.dnsResolver = nil
s.startObservingTunnelStatus()
let session = (s.tunnelProvider.connection as! NETunnelProviderSession)
do {
@@ -276,12 +272,10 @@ class TunnelContainer: NSObject {
}
fileprivate func startDeactivation() {
- if (status != .inactive) {
- dnsResolver = nil
- assert(statusObservationToken != nil)
- let session = (tunnelProvider.connection as! NETunnelProviderSession)
- session.stopTunnel()
- }
+ assert(status == .active)
+ assert(statusObservationToken != nil)
+ let session = (tunnelProvider.connection as! NETunnelProviderSession)
+ session.stopTunnel()
}
private func startObservingTunnelStatus() {