解决注册的问题
This commit is contained in:
parent
9aaaad6254
commit
e79c3270ea
@ -14,7 +14,14 @@ import NIOCore
|
||||
1. 处理rsa的加解密逻辑
|
||||
*/
|
||||
actor SDLContextActor {
|
||||
nonisolated let config: SDLConfiguration
|
||||
enum State {
|
||||
case unregistered
|
||||
case registered
|
||||
}
|
||||
|
||||
nonisolated let config: SDLConfiguration
|
||||
|
||||
private var state: State = .unregistered
|
||||
|
||||
// nat的网络类型
|
||||
var natType: SDLNATProberActor.NatType = .blocked
|
||||
@ -300,6 +307,7 @@ actor SDLContextActor {
|
||||
do {
|
||||
try await self.setNetworkSettings(networkAddress: self.config.networkAddress, dnsServer: SDLDNSClient.Helper.dnsServer)
|
||||
SDLLogger.shared.log("[SDLContext] setNetworkSettings successed")
|
||||
self.state = .registered
|
||||
self.startReader()
|
||||
} catch let err {
|
||||
SDLLogger.shared.log("[SDLContext] setTunnelNetworkSettings get error: \(err)", level: .error)
|
||||
@ -378,6 +386,20 @@ actor SDLContextActor {
|
||||
if let registerSuperData = try? registerSuper.serializedData() {
|
||||
SDLLogger.shared.log("[SDLContext] will send register super")
|
||||
self.udpHole?.send(type: .registerSuper, data: registerSuperData, remoteAddress: self.config.stunSocketAddress)
|
||||
|
||||
// 5秒后检查注册是否完成
|
||||
Task {
|
||||
try await Task.sleep(for: .seconds(5))
|
||||
self.checkRegisterState()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 检查注册状态
|
||||
private func checkRegisterState() {
|
||||
if self.state == .unregistered {
|
||||
SDLLogger.shared.log("[SDLContext] register super failed, retry")
|
||||
self.doRegisterSuper()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user