Relax tunnel provider isolation for Xcode 26
This commit is contained in:
parent
9a5f147585
commit
f7193728df
1 changed files with 10 additions and 15 deletions
|
|
@ -10,14 +10,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
|||
case missingTunnelConfiguration
|
||||
}
|
||||
|
||||
private let logger = Logger.logger(for: PacketTunnelProvider.self)
|
||||
|
||||
private var client: TunnelClient {
|
||||
get throws { try _client.get() }
|
||||
}
|
||||
private let _client: Result<TunnelClient, Swift.Error> = Result {
|
||||
try TunnelClient.unix(socketURL: Constants.socketURL)
|
||||
}
|
||||
private static let logger = Logger.logger(for: PacketTunnelProvider.self)
|
||||
|
||||
override init() {
|
||||
do {
|
||||
|
|
@ -26,31 +19,33 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
|||
databasePath: try Constants.databaseURL.path(percentEncoded: false)
|
||||
)
|
||||
} catch {
|
||||
logger.error("Failed to spawn networking thread: \(error)")
|
||||
Self.logger.error("Failed to spawn networking thread: \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
override func startTunnel(options: [String: NSObject]? = nil) async throws {
|
||||
nonisolated override func startTunnel(options: [String: NSObject]? = nil) async throws {
|
||||
do {
|
||||
let client = try TunnelClient.unix(socketURL: Constants.socketURL)
|
||||
let configuration = try await Array(client.tunnelConfiguration(.init()).prefix(1)).first
|
||||
guard let settings = configuration?.settings else {
|
||||
throw Error.missingTunnelConfiguration
|
||||
}
|
||||
try await setTunnelNetworkSettings(settings)
|
||||
_ = try await client.tunnelStart(.init())
|
||||
logger.log("Started tunnel with network settings: \(settings)")
|
||||
Self.logger.log("Started tunnel with network settings: \(settings)")
|
||||
} catch {
|
||||
logger.error("Failed to start tunnel: \(error)")
|
||||
Self.logger.error("Failed to start tunnel: \(error)")
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
override func stopTunnel(with reason: NEProviderStopReason) async {
|
||||
nonisolated override func stopTunnel(with reason: NEProviderStopReason) async {
|
||||
do {
|
||||
let client = try TunnelClient.unix(socketURL: Constants.socketURL)
|
||||
_ = try await client.tunnelStop(.init())
|
||||
logger.log("Stopped client")
|
||||
Self.logger.log("Stopped client")
|
||||
} catch {
|
||||
logger.error("Failed to stop tunnel: \(error)")
|
||||
Self.logger.error("Failed to stop tunnel: \(error)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue