调整变量的ARC
This commit is contained in:
parent
0a7c8eca85
commit
f9fa7bf73e
@ -165,7 +165,9 @@ actor SDLContextActor {
|
||||
await quicClient.start()
|
||||
|
||||
defer {
|
||||
self.quicClient = nil
|
||||
if self.quicClient === quicClient {
|
||||
self.quicClient = nil
|
||||
}
|
||||
SDLLogger.log("[SDLContext] startSuperClient defer")
|
||||
}
|
||||
|
||||
@ -492,8 +494,11 @@ actor SDLContextActor {
|
||||
self.dnsMonitorTask?.cancel()
|
||||
self.dnsLocalMonitorTask?.cancel()
|
||||
|
||||
let quicClient = self.quicClient
|
||||
self.quicClient = nil
|
||||
self.superMonitorTask?.cancel()
|
||||
self.udpHoleMonitorTask?.cancel()
|
||||
self.superMonitorTask = nil
|
||||
await quicClient?.stop()
|
||||
|
||||
self.readTask?.cancel()
|
||||
self.readTask = nil
|
||||
|
||||
@ -44,7 +44,6 @@ actor SDLQUICClient {
|
||||
private var readTask: Task<Void, Never>?
|
||||
|
||||
private var connection: NWConnection?
|
||||
private let queue = DispatchQueue(label: "com.sdl.QUICClient.queue") // 专用队列保证线程安全
|
||||
|
||||
private let host: String
|
||||
private let port: UInt16
|
||||
@ -58,6 +57,9 @@ actor SDLQUICClient {
|
||||
}
|
||||
|
||||
func start() {
|
||||
let host = self.host
|
||||
let queue = DispatchQueue(label: "com.sdl.QUICClient.queue") // 专用队列保证线程安全
|
||||
|
||||
let options = NWProtocolTLS.Options()
|
||||
sec_protocol_options_add_tls_application_protocol(
|
||||
options.securityProtocolOptions,
|
||||
@ -67,11 +69,11 @@ actor SDLQUICClient {
|
||||
// 这里设置证书的校验逻辑
|
||||
sec_protocol_options_set_verify_block(
|
||||
options.securityProtocolOptions,
|
||||
{ metadata, trust, complete in
|
||||
{ _, trust, complete in
|
||||
// 执行公钥校验
|
||||
complete(TLSVerifier.verify(trust: trust, host: self.host))
|
||||
complete(TLSVerifier.verify(trust: trust, host: host))
|
||||
},
|
||||
self.queue
|
||||
queue
|
||||
)
|
||||
SDLLogger.log("[SDLQUICClient] start with tls protocol", for: .debug)
|
||||
|
||||
@ -87,7 +89,7 @@ actor SDLQUICClient {
|
||||
await self?.handleConnectionState(state: state)
|
||||
}
|
||||
}
|
||||
connection.start(queue: self.queue)
|
||||
connection.start(queue: queue)
|
||||
|
||||
self.connection = connection
|
||||
}
|
||||
@ -190,7 +192,13 @@ actor SDLQUICClient {
|
||||
self.state = .stopped
|
||||
|
||||
self.readTask?.cancel()
|
||||
self.connection?.cancel()
|
||||
self.readTask = nil
|
||||
|
||||
let connection = self.connection
|
||||
self.connection = nil
|
||||
connection?.stateUpdateHandler = nil
|
||||
connection?.cancel()
|
||||
|
||||
self.finishMessageContinuationIfNeed(throwing: nil)
|
||||
|
||||
SDLLogger.log("[SDLQUICClient] stopped")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user