This commit is contained in:
anlicheng 2026-04-15 17:31:55 +08:00
parent 7cf9d1afc1
commit df7753cda7

View File

@ -48,6 +48,7 @@ actor SDLContextActor {
private var udpHole: SDLUDPHole? private var udpHole: SDLUDPHole?
private var udpHoleWorkers: [Task<Void, Never>]? private var udpHoleWorkers: [Task<Void, Never>]?
private var udpHoleLocalAddress: SocketAddress? private var udpHoleLocalAddress: SocketAddress?
private var udpHoleV6: SDLUDPHoleV6? private var udpHoleV6: SDLUDPHoleV6?
private var udpHoleV6Workers: [Task<Void, Never>]? private var udpHoleV6Workers: [Task<Void, Never>]?
private var udpHoleV6LocalAddress: SocketAddress? private var udpHoleV6LocalAddress: SocketAddress?
@ -347,22 +348,22 @@ actor SDLContextActor {
private func startUDPHoleV6() async throws -> SDLUDPHoleV6 { private func startUDPHoleV6() async throws -> SDLUDPHoleV6 {
self.udpHoleV6Workers?.forEach {$0.cancel()} self.udpHoleV6Workers?.forEach {$0.cancel()}
self.udpHoleV6Workers = nil self.udpHoleV6Workers = nil
// udp // udp
let udpHoleV6 = try SDLUDPHoleV6() let udpHoleV6 = try SDLUDPHoleV6()
let localAddress = try udpHoleV6.start() let localAddress = try udpHoleV6.start()
SDLLogger.log("[SDLContext] udpHoleV6 started, on address: \(localAddress)") SDLLogger.log("[SDLContext] udpHoleV6 started, on address: \(localAddress)")
// //
let messageStream = udpHoleV6.messageStream let messageStream = udpHoleV6.messageStream
let messageTask = Task.detached { let messageTask = Task.detached {
await self.consumeUDPHoleMessages(stream: messageStream, localAddress: localAddress, source: .v6) await self.consumeUDPHoleMessages(stream: messageStream, localAddress: localAddress, source: .v6)
} }
self.udpHoleV6 = udpHoleV6 self.udpHoleV6 = udpHoleV6
self.udpHoleV6LocalAddress = localAddress self.udpHoleV6LocalAddress = localAddress
self.udpHoleV6Workers = [messageTask] self.udpHoleV6Workers = [messageTask]
return udpHoleV6 return udpHoleV6
} }
@ -392,16 +393,12 @@ actor SDLContextActor {
self.quicClient?.stop() self.quicClient?.stop()
self.quicClient = nil self.quicClient = nil
if let dnsClient = self.dnsClient { await self.dnsClient?.stop()
await dnsClient.stop()
}
self.dnsWorker?.cancel() self.dnsWorker?.cancel()
self.dnsWorker = nil self.dnsWorker = nil
self.dnsClient = nil self.dnsClient = nil
if let dnsLocalClient = self.dnsLocalClient { await self.dnsLocalClient?.stop()
await dnsLocalClient.stop()
}
self.dnsLocalWorker?.cancel() self.dnsLocalWorker?.cancel()
self.dnsLocalWorker = nil self.dnsLocalWorker = nil
self.dnsLocalClient = nil self.dnsLocalClient = nil
@ -424,8 +421,7 @@ actor SDLContextActor {
self.dataCipher = nil self.dataCipher = nil
} }
private func publishTunnelEvent(code: Int? = nil, private func publishTunnelEvent(code: Int? = nil, message: String) {
message: String) {
SDLTunnelAppNotifier.shared.publish(code: code, message: message) SDLTunnelAppNotifier.shared.publish(code: code, message: message)
} }
@ -849,6 +845,11 @@ extension SDLContextActor {
private func handleHoleControlMessage(_ message: SDLHoleControlMessage, localAddress: SocketAddress, remoteAddress: SocketAddress, source: UDPHoleKind) async { private func handleHoleControlMessage(_ message: SDLHoleControlMessage, localAddress: SocketAddress, remoteAddress: SocketAddress, source: UDPHoleKind) async {
switch message { switch message {
case .stunReply(_):
guard source == .v4 else {
return
}
SDLLogger.log("[SDLContext] get a stunReply", for: .debug)
case .stunProbeReply(let probeReply): case .stunProbeReply(let probeReply):
guard source == .v4 else { guard source == .v4 else {
return return
@ -858,9 +859,6 @@ extension SDLContextActor {
try? self.handleRegister(remoteAddress: remoteAddress, register: register) try? self.handleRegister(remoteAddress: remoteAddress, register: register)
case .registerAck(let registerAck): case .registerAck(let registerAck):
self.handleRegisterAck(remoteAddress: remoteAddress, registerAck: registerAck) self.handleRegisterAck(remoteAddress: remoteAddress, registerAck: registerAck)
case .stunReply(_):
//SDLLogger.shared.log("[SDLContext] get a stunReply: \(stunReply)")
()
} }
} }
@ -932,6 +930,7 @@ extension SDLContextActor {
() ()
} }
} }
} }
private extension UInt32 { private extension UInt32 {