aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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) {