aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/VPN
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2018-10-29 05:02:57 +0530
committerRoopesh Chander <roop@roopc.net>2018-10-29 06:19:50 +0530
commite80e8b06c5025a96faa4e1a08fd6bfa322baecbe (patch)
tree31c1271813a80396f637a487ee2ea159238ad696 /WireGuard/WireGuard/VPN
parentTunnel list, detail: Deletion of tunnels (diff)
downloadwireguard-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.swift21
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)
+ }
}
}
}