]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
WireGuardKit: Only assign self.settingsGenerator upon success to set tunnel network...
authorAndrej Mihajlov <and@mullvad.net>
Wed, 2 Dec 2020 12:53:58 +0000 (13:53 +0100)
committerAndrej Mihajlov <and@mullvad.net>
Thu, 3 Dec 2020 12:22:52 +0000 (13:22 +0100)
Signed-off-by: Andrej Mihajlov <and@mullvad.net>
WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift

index c5a6e2c5dd285ca3ef7538b872a98460af456d9a..358ab53b17f6fd7c44915781899489d5b21131a9 100644 (file)
@@ -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)