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