fix context

This commit is contained in:
anlicheng 2026-02-04 01:03:49 +08:00
parent 9cafe1aa57
commit f801344370

View File

@ -250,7 +250,7 @@ actor SDLContextActor {
}
// super
private func handleUDPHoleReady() async {
private func handleUDPHoleReady() {
guard let udpHole = self.udpHole else {
return
}
@ -260,6 +260,7 @@ actor SDLContextActor {
// nat
Task.detached {
await Task.yield()
if let natType = await self.proberActor?.probeNatType() {
await self.setNatType(natType: natType)
SDLLogger.shared.log("[SDLContext] nat_type is: \(natType)")
@ -267,21 +268,7 @@ actor SDLContextActor {
}
//
var registerSuper = SDLRegisterSuper()
registerSuper.pktID = 0
registerSuper.clientID = self.config.clientId
registerSuper.networkID = self.config.networkAddress.networkId
registerSuper.mac = self.config.networkAddress.mac
registerSuper.ip = self.config.networkAddress.ip
registerSuper.maskLen = UInt32(self.config.networkAddress.maskLen)
registerSuper.hostname = self.config.hostname
registerSuper.pubKey = self.rsaCipher.pubKey
registerSuper.accessToken = self.config.accessToken
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)
}
self.doRegisterSuper()
}
private func sendStunRequest() {
@ -344,6 +331,7 @@ actor SDLContextActor {
private func handleEvent(event: SDLEvent) throws {
switch event {
case .dropMacs(let dropMacsEvent):
// TODO
SDLLogger.shared.log("[SDLContext] drop macs", level: .info)
()
case .natChanged(let natChangedEvent):
@ -362,8 +350,8 @@ actor SDLContextActor {
self.udpHole?.send(type: .register, data: try register.serializedData(), remoteAddress: remoteAddress)
}
case .refreshAuth(let refreshAuthEvent):
SDLLogger.shared.log("[SDLContext] refresh auth", level: .info)
()
SDLLogger.shared.log("[SDLContext] refresh auth: \(refreshAuthEvent.networkID)", level: .info)
self.doRegisterSuper()
case .networkShutdown(let shutdownEvent):
let alertNotice = NoticeMessage.alert(alert: shutdownEvent.message)
self.noticeClient?.send(data: alertNotice)
@ -371,6 +359,25 @@ actor SDLContextActor {
}
}
private func doRegisterSuper() {
//
var registerSuper = SDLRegisterSuper()
registerSuper.pktID = 0
registerSuper.clientID = self.config.clientId
registerSuper.networkID = self.config.networkAddress.networkId
registerSuper.mac = self.config.networkAddress.mac
registerSuper.ip = self.config.networkAddress.ip
registerSuper.maskLen = UInt32(self.config.networkAddress.maskLen)
registerSuper.hostname = self.config.hostname
registerSuper.pubKey = self.rsaCipher.pubKey
registerSuper.accessToken = self.config.accessToken
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)
}
}
private func handleRegister(remoteAddress: SocketAddress, register: SDLRegister) throws {
let networkAddr = config.networkAddress
SDLLogger.shared.log("register packet: \(register), network_address: \(networkAddr)", level: .debug)