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)