]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
TunnelProvider: store the entire NWPath
authorJason A. Donenfeld <Jason@zx2c4.com>
Sat, 8 Jun 2019 20:35:09 +0000 (22:35 +0200)
committerJason A. Donenfeld <Jason@zx2c4.com>
Sun, 9 Jun 2019 09:39:06 +0000 (11:39 +0200)
Otherwise [utun0, en0] == [en0, utun0] before WiFi has connected, and we
wind up not rebinding after WiFi does successfully connect, which means
people have trouble when resuming from sleep.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift

index 0618b19e53c9fcad81ff4eab30c813f99ac4e18b..2ecd610c6ed3a1d070bfa2966090345a4435a7c1 100644 (file)
@@ -11,7 +11,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
     private var handle: Int32?
     private var networkMonitor: NWPathMonitor?
     private var ifname: String?
-    private var lastSeenInterfaces: [String] = []
+    private var lastPath: Network.NWPath?
     private var packetTunnelSettingsGenerator: PacketTunnelSettingsGenerator?
 
     deinit {
@@ -143,18 +143,15 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
 
     private func pathUpdate(path: Network.NWPath) {
         guard let handle = handle else { return }
-        guard let ifname = ifname else { return }
         wg_log(.debug, message: "Network change detected with \(path.status) route and interface order \(path.availableInterfaces)")
-        guard path.status == .satisfied else { return }
 
         #if os(iOS)
         if let packetTunnelSettingsGenerator = packetTunnelSettingsGenerator {
             _ = packetTunnelSettingsGenerator.endpointUapiConfiguration().withGoString { return wgSetConfig(handle, $0) }
         }
         #endif
-        let interfaces = path.availableInterfaces.filter { $0.name != ifname }.compactMap { $0.name }
-        if !interfaces.elementsEqual(lastSeenInterfaces) {
-            lastSeenInterfaces = interfaces
+        if path != lastPath {
+            lastPath = path
             wgBumpSockets(handle)
         }
     }