aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-02-07 15:01:37 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2019-02-07 15:01:37 +0100
commit394a0cbeb03d41af9d791db1c09054e4ad547f6b (patch)
treec773e491aafdce7f1a56af2a2ccb8e433a8f4ece /WireGuard/WireGuard
parentTunnelsManager: When creating/modifying a tunnel, update the associated object (diff)
downloadwireguard-apple-394a0cbeb03d41af9d791db1c09054e4ad547f6b.tar.xz
wireguard-apple-394a0cbeb03d41af9d791db1c09054e4ad547f6b.zip
PacketTunnelProvider: proper fix for 32073323
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r--WireGuard/WireGuard/Tunnel/TunnelsManager.swift15
-rw-r--r--WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift7
2 files changed, 7 insertions, 15 deletions
diff --git a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift
index a2fc00b..f0ba84a 100644
--- a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift
+++ b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift
@@ -442,21 +442,6 @@ class TunnelContainer: NSObject {
}
func refreshStatus() {
- #if os(macOS)
- // In macOS, we wait for a few seconds after deactivation to work around a system bug.
- // If a tunnel gets activated in this time interval, it's stopped by the system automatically in ~25 seconds.
- if self.status == .deactivating && tunnelProvider.connection.status == .disconnected {
- self.deactivationTimer?.invalidate()
- let deactivationTimer = Timer(timeInterval: 6 /* seconds */, repeats: false) { [weak self] _ in
- guard let self = self else { return }
- self.status = TunnelStatus(from: self.tunnelProvider.connection.status)
- self.isActivateOnDemandEnabled = self.tunnelProvider.isOnDemandEnabled
- }
- self.deactivationTimer = deactivationTimer
- RunLoop.main.add(deactivationTimer, forMode: .common)
- return
- }
- #endif
status = TunnelStatus(from: tunnelProvider.connection.status)
isActivateOnDemandEnabled = tunnelProvider.isOnDemandEnabled
}
diff --git a/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift b/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift
index 5ac6b28..8b96bae 100644
--- a/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift
+++ b/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift
@@ -95,6 +95,13 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
wgTurnOff(handle)
}
completionHandler()
+
+ #if os(macOS)
+ // HACK: This is a filthy hack to work around Apple bug 32073323 (dup'd by us as 47526107).
+ // Remove it when they finally fix this upstream and the fix has been rolled out to
+ // sufficient quantities of users.
+ exit(0)
+ #endif
}
override func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)? = nil) {