diff --git a/Tun/Punchnet/Actors/SDLContextActor.swift b/Tun/Punchnet/Actors/SDLContextActor.swift index dcf38d5..37ff6b9 100644 --- a/Tun/Punchnet/Actors/SDLContextActor.swift +++ b/Tun/Punchnet/Actors/SDLContextActor.swift @@ -161,6 +161,7 @@ actor SDLContextActor { await self.handleRegisterSuperNak(nakPacket: registerSuperNak) case .peerInfo(let peerInfo): SDLLogger.shared.log("[SDLContext] peer message: \(peerInfo)") + self.puncherActor.handlePeerInfo(using: self.udpHole, peerInfo: peerInfo) case .event(let event): await self.handleEvent(event: event) case .policyReponse(let policyResponse): diff --git a/Tun/Punchnet/Actors/SDLPuncherActor.swift b/Tun/Punchnet/Actors/SDLPuncherActor.swift index bb75868..6a4f1cb 100644 --- a/Tun/Punchnet/Actors/SDLPuncherActor.swift +++ b/Tun/Punchnet/Actors/SDLPuncherActor.swift @@ -37,14 +37,14 @@ actor SDLPuncherActor { Task { // 启动冷却期 - try? await Task.sleep(for: .seconds(5)) + try? await Task.sleep(for: cooldown) self.endCooldown(for: dstMac) self.removePendingRequest(for: pktId) } } - func handlePeerInfo(using udpHole: SDLUDPHole, peerInfo: SDLPeerInfo) async { - guard let request = pendingRequests.removeValue(forKey: peerInfo.pktID), + func handlePeerInfo(using udpHole: SDLUDPHole?, peerInfo: SDLPeerInfo) async { + guard let udpHole, let request = pendingRequests.removeValue(forKey: peerInfo.pktID), let remoteAddress = try? await peerInfo.v4Info.socketAddress() else { return }