diff options
author | Roopesh Chander <roop@roopc.net> | 2018-10-29 05:02:57 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2018-10-29 06:19:50 +0530 |
commit | e80e8b06c5025a96faa4e1a08fd6bfa322baecbe (patch) | |
tree | 31c1271813a80396f637a487ee2ea159238ad696 /WireGuard/WireGuard/VPN | |
parent | Tunnel list, detail: Deletion of tunnels (diff) | |
download | wireguard-apple-e80e8b06c5025a96faa4e1a08fd6bfa322baecbe.tar.xz wireguard-apple-e80e8b06c5025a96faa4e1a08fd6bfa322baecbe.zip |
VPN: Reload the tunnel before starting it up
To avoid errors like this: https://stackoverflow.com/q/47550706
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuard/VPN')
-rw-r--r-- | WireGuard/WireGuard/VPN/TunnelsManager.swift | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/WireGuard/WireGuard/VPN/TunnelsManager.swift b/WireGuard/WireGuard/VPN/TunnelsManager.swift index bfecfd6..76d5c05 100644 --- a/WireGuard/WireGuard/VPN/TunnelsManager.swift +++ b/WireGuard/WireGuard/VPN/TunnelsManager.swift @@ -272,15 +272,18 @@ class TunnelContainer: NSObject { s.status = .inactive return } - s.startObservingTunnelStatus() - let session = (s.tunnelProvider.connection as! NETunnelProviderSession) - do { - let tunnelOptions = PacketTunnelOptionsGenerator.generateOptions( - from: tunnelConfiguration, withResolvedEndpoints: endpoints) - try session.startTunnel(options: tunnelOptions) - } catch (let error) { - os_log("Failed to activate tunnel: %{public}@", log: OSLog.default, type: .debug, "\(error)") - completionHandler(error) + s.tunnelProvider.loadFromPreferences { [weak s] (error) in + guard let s = s else { return } + s.startObservingTunnelStatus() + let session = (s.tunnelProvider.connection as! NETunnelProviderSession) + do { + let tunnelOptions = PacketTunnelOptionsGenerator.generateOptions( + from: tunnelConfiguration, withResolvedEndpoints: endpoints) + try session.startTunnel(options: tunnelOptions) + } catch (let error) { + os_log("Failed to activate tunnel: %{public}@", log: OSLog.default, type: .debug, "\(error)") + completionHandler(error) + } } } } |