fix dnsLocalClient
This commit is contained in:
parent
2505945825
commit
09af580892
@ -16,6 +16,12 @@ import NIOCore
|
|||||||
|
|
||||||
enum SDLContextError: Error {
|
enum SDLContextError: Error {
|
||||||
case udpHoleClosed
|
case udpHoleClosed
|
||||||
|
|
||||||
|
case dnsLocalClientClosed
|
||||||
|
case dnsLocalClientCancelled
|
||||||
|
|
||||||
|
case dnsClientClosed
|
||||||
|
case dnsClientCancelled
|
||||||
}
|
}
|
||||||
|
|
||||||
actor SDLContextActor {
|
actor SDLContextActor {
|
||||||
@ -310,11 +316,6 @@ actor SDLContextActor {
|
|||||||
SDLLogger.log("[SDLContext] dnsClient started")
|
SDLLogger.log("[SDLContext] dnsClient started")
|
||||||
self.dnsClient = dnsClient
|
self.dnsClient = dnsClient
|
||||||
|
|
||||||
defer {
|
|
||||||
self.dnsClient?.stop()
|
|
||||||
self.dnsClient = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
try await withThrowingTaskGroup { group in
|
try await withThrowingTaskGroup { group in
|
||||||
defer {
|
defer {
|
||||||
group.cancelAll()
|
group.cancelAll()
|
||||||
@ -327,6 +328,7 @@ actor SDLContextActor {
|
|||||||
let nePacket = NEPacket(data: packet, protocolFamily: 2)
|
let nePacket = NEPacket(data: packet, protocolFamily: 2)
|
||||||
self.provider.packetFlow.writePacketObjects([nePacket])
|
self.provider.packetFlow.writePacketObjects([nePacket])
|
||||||
}
|
}
|
||||||
|
throw SDLContextError.dnsClientClosed
|
||||||
}
|
}
|
||||||
|
|
||||||
group.addTask {
|
group.addTask {
|
||||||
@ -338,7 +340,7 @@ actor SDLContextActor {
|
|||||||
throw error
|
throw error
|
||||||
case .cancelled:
|
case .cancelled:
|
||||||
SDLLogger.log("[SDLContext] dnsClient cancelled")
|
SDLLogger.log("[SDLContext] dnsClient cancelled")
|
||||||
return
|
throw SDLContextError.dnsClientCancelled
|
||||||
case .sendFailed(let error):
|
case .sendFailed(let error):
|
||||||
SDLLogger.log("[SDLContext] dnsClient sendFailed with error: \(error)")
|
SDLLogger.log("[SDLContext] dnsClient sendFailed with error: \(error)")
|
||||||
throw error
|
throw error
|
||||||
@ -346,7 +348,15 @@ actor SDLContextActor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try await group.next()
|
do {
|
||||||
|
try await group.next()
|
||||||
|
dnsClient.stop()
|
||||||
|
self.dnsClient = nil
|
||||||
|
} catch let err {
|
||||||
|
dnsClient.stop()
|
||||||
|
self.dnsClient = nil
|
||||||
|
throw err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -373,6 +383,7 @@ actor SDLContextActor {
|
|||||||
let nePacket = NEPacket(data: packet, protocolFamily: 2)
|
let nePacket = NEPacket(data: packet, protocolFamily: 2)
|
||||||
self.provider.packetFlow.writePacketObjects([nePacket])
|
self.provider.packetFlow.writePacketObjects([nePacket])
|
||||||
}
|
}
|
||||||
|
throw SDLContextError.dnsLocalClientClosed
|
||||||
}
|
}
|
||||||
|
|
||||||
group.addTask {
|
group.addTask {
|
||||||
@ -385,7 +396,7 @@ actor SDLContextActor {
|
|||||||
throw error
|
throw error
|
||||||
case .cancelled:
|
case .cancelled:
|
||||||
SDLLogger.log("[SDLContext] dnsLocalClient cancelled")
|
SDLLogger.log("[SDLContext] dnsLocalClient cancelled")
|
||||||
return
|
throw SDLContextError.dnsLocalClientCancelled
|
||||||
case .sendFailed(let error):
|
case .sendFailed(let error):
|
||||||
SDLLogger.log("[SDLContext] dnsLocalClient sendFailed: \(error)")
|
SDLLogger.log("[SDLContext] dnsLocalClient sendFailed: \(error)")
|
||||||
throw error
|
throw error
|
||||||
@ -395,10 +406,10 @@ actor SDLContextActor {
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
try await group.next()
|
try await group.next()
|
||||||
await self.dnsLocalClient?.stop()
|
await dnsLocalClient.stop()
|
||||||
self.dnsLocalClient = nil
|
self.dnsLocalClient = nil
|
||||||
} catch let err {
|
} catch let err {
|
||||||
await self.dnsLocalClient?.stop()
|
await dnsLocalClient.stop()
|
||||||
self.dnsLocalClient = nil
|
self.dnsLocalClient = nil
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user