From 394a0cbeb03d41af9d791db1c09054e4ad547f6b Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Thu, 7 Feb 2019 15:01:37 +0100 Subject: PacketTunnelProvider: proper fix for 32073323 Signed-off-by: Jason A. Donenfeld --- WireGuard/WireGuard/Tunnel/TunnelsManager.swift | 15 --------------- .../WireGuardNetworkExtension/PacketTunnelProvider.swift | 7 +++++++ 2 files changed, 7 insertions(+), 15 deletions(-) (limited to 'WireGuard') 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) { -- cgit v1.2.3-59-g8ed1b