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