Fix Apple runner toolchain alignment
Some checks failed
Build Site / Next.js Build (push) Waiting to run
Build Rust / Cargo Test (push) Waiting to run
Build Apple / Build App (iOS Simulator) (push) Failing after 1m46s
Build Apple / Build App (macOS) (push) Failing after 2m6s

This commit is contained in:
Conrad Kramer 2026-03-19 03:36:11 -07:00
parent 9fcaf137ac
commit e0fe21fad8
4 changed files with 41 additions and 19 deletions

View file

@ -2,7 +2,7 @@ import AsyncAlgorithms
import BurrowConfiguration
import BurrowCore
import libburrow
import NetworkExtension
@preconcurrency import NetworkExtension
import os
class PacketTunnelProvider: NEPacketTunnelProvider {
@ -10,7 +10,14 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
case missingTunnelConfiguration
}
private static let logger = Logger.logger(for: PacketTunnelProvider.self)
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)
}
override init() {
do {
@ -19,33 +26,31 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
databasePath: try Constants.databaseURL.path(percentEncoded: false)
)
} catch {
Self.logger.error("Failed to spawn networking thread: \(error)")
logger.error("Failed to spawn networking thread: \(error)")
}
}
nonisolated override func startTunnel(options: [String: NSObject]? = nil) async throws {
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())
Self.logger.log("Started tunnel with network settings: \(settings)")
logger.log("Started tunnel with network settings: \(settings)")
} catch {
Self.logger.error("Failed to start tunnel: \(error)")
logger.error("Failed to start tunnel: \(error)")
throw error
}
}
nonisolated override func stopTunnel(with reason: NEProviderStopReason) async {
override func stopTunnel(with reason: NEProviderStopReason) async {
do {
let client = try TunnelClient.unix(socketURL: Constants.socketURL)
_ = try await client.tunnelStop(.init())
Self.logger.log("Stopped client")
logger.log("Stopped client")
} catch {
Self.logger.error("Failed to stop tunnel: \(error)")
logger.error("Failed to stop tunnel: \(error)")
}
}
}