]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Reassign tunnelProvider if it changes from outside the app
authorJason A. Donenfeld <Jason@zx2c4.com>
Sat, 22 Dec 2018 05:56:12 +0000 (06:56 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Sat, 22 Dec 2018 05:56:12 +0000 (06:56 +0100)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
WireGuard/WireGuard/Tunnel/TunnelsManager.swift

index 8b5311dadcd0763f5b21024c8766c1f802386a26..a2360a888c9c97ebe8a5fcf72a1fe2768e8ebb32 100644 (file)
@@ -281,7 +281,9 @@ class TunnelsManager {
             guard let self = self,
                 let session = statusChangeNotification.object as? NETunnelProviderSession,
                 let tunnelProvider = session.manager as? NETunnelProviderManager,
-                let tunnel = self.tunnels.first(where: { $0.tunnelProvider == tunnelProvider }) else { return }
+                let tunnelConfiguration = TunnelContainer(tunnel: tunnelProvider).tunnelConfiguration,
+                let tunnel = self.tunnels.first(where: { $0.tunnelConfiguration == tunnelConfiguration }) else { return }
+            tunnel.tunnelProvider = tunnelProvider
 
             wg_log(.debug, message: "Tunnel '\(tunnel.name)' connection status changed to '\(tunnel.tunnelProvider.connection.status)'")
 
@@ -364,7 +366,7 @@ class TunnelContainer: NSObject {
     var activationAttemptId: String?
     var activationTimer: Timer?
 
-    fileprivate let tunnelProvider: NETunnelProviderManager
+    fileprivate var tunnelProvider: NETunnelProviderManager
     private var lastTunnelConnectionStatus: NEVPNStatus?
 
     var tunnelConfiguration: TunnelConfiguration? {