From: Jason A. Donenfeld Date: Wed, 31 Oct 2018 02:03:00 +0000 (+0100) Subject: NetworkExtension: close context before turning off go X-Git-Tag: 0.0.20181104-1~90 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d2f3a29f45db59ab48fb398b835b377ca4e6833d;p=thirdparty%2Fwireguard-apple.git NetworkExtension: close context before turning off go The go turnOff code waits for all readers to have completed. In order to make readers complete, we must send the signal to unblock the request. Thus, we must reorder these. Signed-off-by: Jason A. Donenfeld --- diff --git a/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift b/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift index a961f76..5f19fb1 100644 --- a/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift +++ b/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift @@ -125,10 +125,10 @@ class PacketTunnelProvider: NEPacketTunnelProvider { /// Begin the process of stopping the tunnel. override func stopTunnel(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) { os_log("Stopping tunnel", log: OSLog.default, type: .info) + wgContext?.closeTunnel() if let handle = wgHandle { wgTurnOff(handle) } - wgContext?.closeTunnel() completionHandler() }