This commit is contained in:
anlicheng 2026-04-14 16:08:28 +08:00
parent 60d1506b70
commit cac931020c

View File

@ -48,6 +48,8 @@ actor SDLContextActor {
//
private var udpHole: SDLUDPHole?
private var udpHoleWorkers: [Task<Void, Never>]?
private var udpHoleV6: SDLUDPHoleV6?
private var udpHoleV6Workers: [Task<Void, Never>]?
// dnsclient
private var dnsClient: DNSCloudClient?
@ -147,6 +149,13 @@ actor SDLContextActor {
try await udpHole.waitClose()
SDLLogger.log("[SDLContext] udp closed!!!!")
}
await self.supervisor.addWorker(name: "udpHoleV6") {
let udpHoleV6 = try await self.startUDPHoleV6()
SDLLogger.log("[SDLContext] udpV6 running!!!!")
try await udpHoleV6.waitClose()
SDLLogger.log("[SDLContext] udpV6 closed!!!!")
}
}
public func waitForReady() async throws {
@ -363,6 +372,21 @@ actor SDLContextActor {
return udpHole
}
private func startUDPHoleV6() async throws -> SDLUDPHoleV6 {
self.udpHoleV6Workers?.forEach {$0.cancel()}
self.udpHoleV6Workers = nil
// udp ipv6
let udpHoleV6 = try SDLUDPHoleV6()
let localAddress = try udpHoleV6.start()
SDLLogger.log("[SDLContext] udpHoleV6 started, on address: \(localAddress)")
self.udpHoleV6 = udpHoleV6
self.udpHoleV6Workers = []
return udpHoleV6
}
// context
public func stop() async {
self.resumeReadyWaiters(.failure(CancellationError()))
@ -377,6 +401,11 @@ actor SDLContextActor {
self.udpHole?.stop()
self.udpHole = nil
self.udpHoleV6Workers?.forEach { $0.cancel() }
self.udpHoleV6Workers = nil
self.udpHoleV6?.stop()
self.udpHoleV6 = nil
self.quicWorker?.cancel()
self.quicWorker = nil
self.quicClient?.stop()
@ -1007,6 +1036,7 @@ actor SDLContextActor {
deinit {
self.udpHole = nil
self.udpHoleV6 = nil
self.dnsClient = nil
}
}