解决注册的问题
This commit is contained in:
parent
9aaaad6254
commit
e79c3270ea
@ -14,8 +14,15 @@ import NIOCore
|
|||||||
1. 处理rsa的加解密逻辑
|
1. 处理rsa的加解密逻辑
|
||||||
*/
|
*/
|
||||||
actor SDLContextActor {
|
actor SDLContextActor {
|
||||||
nonisolated let config: SDLConfiguration
|
enum State {
|
||||||
|
case unregistered
|
||||||
|
case registered
|
||||||
|
}
|
||||||
|
|
||||||
|
nonisolated let config: SDLConfiguration
|
||||||
|
|
||||||
|
private var state: State = .unregistered
|
||||||
|
|
||||||
// nat的网络类型
|
// nat的网络类型
|
||||||
var natType: SDLNATProberActor.NatType = .blocked
|
var natType: SDLNATProberActor.NatType = .blocked
|
||||||
|
|
||||||
@ -300,6 +307,7 @@ actor SDLContextActor {
|
|||||||
do {
|
do {
|
||||||
try await self.setNetworkSettings(networkAddress: self.config.networkAddress, dnsServer: SDLDNSClient.Helper.dnsServer)
|
try await self.setNetworkSettings(networkAddress: self.config.networkAddress, dnsServer: SDLDNSClient.Helper.dnsServer)
|
||||||
SDLLogger.shared.log("[SDLContext] setNetworkSettings successed")
|
SDLLogger.shared.log("[SDLContext] setNetworkSettings successed")
|
||||||
|
self.state = .registered
|
||||||
self.startReader()
|
self.startReader()
|
||||||
} catch let err {
|
} catch let err {
|
||||||
SDLLogger.shared.log("[SDLContext] setTunnelNetworkSettings get error: \(err)", level: .error)
|
SDLLogger.shared.log("[SDLContext] setTunnelNetworkSettings get error: \(err)", level: .error)
|
||||||
@ -378,6 +386,20 @@ actor SDLContextActor {
|
|||||||
if let registerSuperData = try? registerSuper.serializedData() {
|
if let registerSuperData = try? registerSuper.serializedData() {
|
||||||
SDLLogger.shared.log("[SDLContext] will send register super")
|
SDLLogger.shared.log("[SDLContext] will send register super")
|
||||||
self.udpHole?.send(type: .registerSuper, data: registerSuperData, remoteAddress: self.config.stunSocketAddress)
|
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