From dc9a547950a2ea2fc4e40c52d6de8243886e8bde Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 29 Sep 2025 14:55:19 -0700 Subject: [PATCH] Add timeouts to hp Former-commit-id: fa1d2b1f557a72f8f15bc6501811da37f7863a7c --- common.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/common.go b/common.go index 500c0be..b11bac9 100644 --- a/common.go +++ b/common.go @@ -402,11 +402,17 @@ func keepSendingUDPHolePunchToMultipleExitNodes(exitNodes []ExitNode, olmID stri ticker := time.NewTicker(250 * time.Millisecond) defer ticker.Stop() + timeout := time.NewTimer(15 * time.Second) + defer timeout.Stop() + for { select { case <-stopHolepunch: logger.Info("Stopping UDP holepunch for all exit nodes") return + case <-timeout.C: + logger.Info("UDP holepunch routine timed out after 15 seconds for all exit nodes") + return case <-ticker.C: // Send hole punch to all exit nodes for _, node := range resolvedNodes { @@ -471,11 +477,17 @@ func keepSendingUDPHolePunch(endpoint string, olmID string, sourcePort uint16, s ticker := time.NewTicker(250 * time.Millisecond) defer ticker.Stop() + timeout := time.NewTimer(15 * time.Second) + defer timeout.Stop() + for { select { case <-stopHolepunch: logger.Info("Stopping UDP holepunch") return + case <-timeout.C: + logger.Info("UDP holepunch routine timed out after 15 seconds") + return case <-ticker.C: if err := sendUDPHolePunchWithConn(conn, remoteAddr, olmID, serverPubKey); err != nil { logger.Error("Failed to send UDP hole punch: %v", err)