解决注册的问题

This commit is contained in:
anlicheng 2026-02-04 17:25:00 +08:00
parent 9aaaad6254
commit e79c3270ea

View File

@ -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()
} }
} }