diff options
author | Andrej Mihajlov <and@mullvad.net> | 2020-12-02 13:53:58 +0100 |
---|---|---|
committer | Andrej Mihajlov <and@mullvad.net> | 2020-12-03 13:22:52 +0100 |
commit | b34625f5111358ab0263b446a1774956f2c171e8 (patch) | |
tree | a887981e629cb2c2e5717eada91c03d840373882 | |
parent | WireGuardKit: Remove handleLogLine from WireGuardAdapter (diff) | |
download | wireguard-apple-b34625f5111358ab0263b446a1774956f2c171e8.tar.xz wireguard-apple-b34625f5111358ab0263b446a1774956f2c171e8.zip |
WireGuardKit: Only assign self.settingsGenerator upon success to set tunnel network settings to avoid inconsistent state
Signed-off-by: Andrej Mihajlov <and@mullvad.net>
-rw-r--r-- | WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift b/WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift index c5a6e2c..358ab53 100644 --- a/WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift +++ b/WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift @@ -263,7 +263,6 @@ public class WireGuardAdapter { let settingsGenerator = PacketTunnelSettingsGenerator(tunnelConfiguration: tunnelConfiguration, resolvedEndpoints: resolvedEndpoints) let networkSettings = settingsGenerator.generateNetworkSettings() - self.settingsGenerator = settingsGenerator var systemError: Error? let condition = NSCondition() @@ -284,6 +283,11 @@ public class WireGuardAdapter { if condition.wait(until: Date().addingTimeInterval(setTunnelNetworkSettingsTimeout)) { let returnError = systemError.map { WireGuardAdapterError.setNetworkSettings($0) } + // Only assign `settingsGenerator` when `setTunnelNetworkSettings` succeeded. + if returnError == nil { + self.settingsGenerator = settingsGenerator + } + completionHandler(settingsGenerator, returnError) } else { completionHandler(nil, .setNetworkSettingsTimeout) |