fix puncher
This commit is contained in:
parent
a3af3fde32
commit
6b7e02a65b
@ -93,7 +93,7 @@ actor SDLPuncherActor {
|
||||
quicClient.send(type: .queryInfo, data: queryData)
|
||||
}
|
||||
|
||||
func handlePeerInfo(using udpHole: SDLUDPHole?, peerInfo: SDLPeerInfo) async {
|
||||
func handlePeerInfo(using udpHole: SDLUDPHole?, udpHoleV6: SDLUDPHoleV6?, peerInfo: SDLPeerInfo) async {
|
||||
let now = Date()
|
||||
self.cleanupExpiredEntries(now: now)
|
||||
|
||||
@ -108,23 +108,6 @@ actor SDLPuncherActor {
|
||||
entry.markCoolingDown()
|
||||
self.requestEntries[peerInfo.dstMac] = entry
|
||||
|
||||
guard let udpHole else {
|
||||
SDLLogger.log("[SDLPuncherActor] udpHole is nil when peerInfo arrived", for: .debug)
|
||||
return
|
||||
}
|
||||
|
||||
guard peerInfo.hasV4Info else {
|
||||
SDLLogger.log("[SDLPuncherActor] peerInfo missing v4Info", for: .debug)
|
||||
return
|
||||
}
|
||||
|
||||
guard let remoteAddress = try? await peerInfo.v4Info.socketAddress() else {
|
||||
SDLLogger.log("[SDLPuncherActor] failed to resolve peerInfo.v4Info", for: .debug)
|
||||
return
|
||||
}
|
||||
|
||||
SDLLogger.log("[SDLContext] hole sock address: \(remoteAddress)", for: .punchnet)
|
||||
|
||||
var register = SDLRegister()
|
||||
register.networkID = entry.request.networkId
|
||||
register.srcMac = entry.request.srcMac
|
||||
@ -135,7 +118,25 @@ actor SDLPuncherActor {
|
||||
return
|
||||
}
|
||||
|
||||
udpHole.send(type: .register, data: registerData, remoteAddress: remoteAddress)
|
||||
// 并行发送register请求
|
||||
if let udpHole, peerInfo.hasV4Info {
|
||||
if let remoteAddress = try? await peerInfo.v4Info.socketAddress() {
|
||||
SDLLogger.log("[SDLContext] hole sock address: \(remoteAddress)", for: .punchnet)
|
||||
udpHole.send(type: .register, data: registerData, remoteAddress: remoteAddress)
|
||||
} else {
|
||||
SDLLogger.log("[SDLPuncherActor] failed to resolve peerInfo.v4Info", for: .debug)
|
||||
}
|
||||
}
|
||||
|
||||
if let udpHoleV6, peerInfo.hasV6Info {
|
||||
if let remoteAddress = try? await peerInfo.v6Info.socketAddress() {
|
||||
SDLLogger.log("[SDLContext] hole sock address v6: \(remoteAddress)", for: .punchnet)
|
||||
udpHoleV6.send(type: .register, data: registerData, remoteAddress: remoteAddress)
|
||||
} else {
|
||||
SDLLogger.log("[SDLPuncherActor] failed to resolve peerInfo.v6Info", for: .debug)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func stop() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user