Kit: make it possible to opt-out from automatically raising the reasserting flag.

Signed-off-by: Andrej Mihajlov <and@mullvad.net>
This commit is contained in:
Andrej Mihajlov
2022-02-21 15:29:02 +01:00
parent 399013415d
commit b7f344968d
+13 -1
View File
@@ -56,6 +56,10 @@ public class WireGuardAdapter {
/// Adapter state.
private var state: State = .stopped
/// Whether adapter should automatically raise the `reasserting` flag when updating
/// tunnel configuration.
private let shouldHandleReasserting: Bool
/// Tunnel device file descriptor.
private var tunnelFileDescriptor: Int32? {
var ctlInfo = ctl_info()
@@ -128,9 +132,12 @@ public class WireGuardAdapter {
/// Designated initializer.
/// - Parameter packetTunnelProvider: an instance of `NEPacketTunnelProvider`. Internally stored
/// as a weak reference.
/// - Parameter shouldHandleReasserting: whether adapter should automatically raise the
/// `reasserting` flag when updating tunnel configuration.
/// - Parameter logHandler: a log handler closure.
public init(with packetTunnelProvider: NEPacketTunnelProvider, logHandler: @escaping LogHandler) {
public init(with packetTunnelProvider: NEPacketTunnelProvider, shouldHandleReasserting: Bool = true, logHandler: @escaping LogHandler) {
self.packetTunnelProvider = packetTunnelProvider
self.shouldHandleReasserting = shouldHandleReasserting
self.logHandler = logHandler
setupLogHandler()
@@ -248,10 +255,15 @@ public class WireGuardAdapter {
// Tell the system that the tunnel is going to reconnect using new WireGuard
// configuration.
// This will broadcast the `NEVPNStatusDidChange` notification to the GUI process.
if self.shouldHandleReasserting {
self.packetTunnelProvider?.reasserting = true
}
defer {
if self.shouldHandleReasserting {
self.packetTunnelProvider?.reasserting = false
}
}
let settingsGenerator: PacketTunnelSettingsGenerator
do {