fix puncher
This commit is contained in:
parent
a3af3fde32
commit
6b7e02a65b
@ -93,7 +93,7 @@ actor SDLPuncherActor {
|
|||||||
quicClient.send(type: .queryInfo, data: queryData)
|
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()
|
let now = Date()
|
||||||
self.cleanupExpiredEntries(now: now)
|
self.cleanupExpiredEntries(now: now)
|
||||||
|
|
||||||
@ -108,23 +108,6 @@ actor SDLPuncherActor {
|
|||||||
entry.markCoolingDown()
|
entry.markCoolingDown()
|
||||||
self.requestEntries[peerInfo.dstMac] = entry
|
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()
|
var register = SDLRegister()
|
||||||
register.networkID = entry.request.networkId
|
register.networkID = entry.request.networkId
|
||||||
register.srcMac = entry.request.srcMac
|
register.srcMac = entry.request.srcMac
|
||||||
@ -135,7 +118,25 @@ actor SDLPuncherActor {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 并行发送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)
|
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() {
|
func stop() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user