]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
VPN: Reload the tunnel before starting it up
authorRoopesh Chander <roop@roopc.net>
Sun, 28 Oct 2018 23:32:57 +0000 (05:02 +0530)
committerRoopesh Chander <roop@roopc.net>
Mon, 29 Oct 2018 00:49:50 +0000 (06:19 +0530)
To avoid errors like this: https://stackoverflow.com/q/47550706

Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/VPN/TunnelsManager.swift

index bfecfd612350da49d974fe13daf31578f3599372..76d5c05ae859b2054875bd6ada8cdce6c6ce003d 100644 (file)
@@ -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)
+                }
             }
         }
     }