From b881808caeac1df805b8c3072c726d7cfde98423 Mon Sep 17 00:00:00 2001 From: Owen Date: Fri, 11 Jul 2025 16:35:39 -0700 Subject: [PATCH] Loosen up the ping intervals --- main.go | 12 ++++++------ util.go | 15 +++++++-------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/main.go b/main.go index 8af6403..bcc1da9 100644 --- a/main.go +++ b/main.go @@ -87,8 +87,8 @@ var ( dockerSocket string dockerEnforceNetworkValidation string dockerEnforceNetworkValidationBool bool - pingInterval = 2 * time.Second - pingTimeout = 3 * time.Second + pingInterval time.Duration + pingTimeout time.Duration publicKey wgtypes.Key pingStopChan chan struct{} stopFunc func() @@ -151,17 +151,17 @@ func main() { flag.StringVar(&dockerSocket, "docker-socket", "", "Path to Docker socket (typically /var/run/docker.sock)") } if pingIntervalStr == "" { - flag.StringVar(&pingIntervalStr, "ping-interval", "1s", "Interval for pinging the server (default 1s)") + flag.StringVar(&pingIntervalStr, "ping-interval", "3s", "Interval for pinging the server (default 3s)") } if pingTimeoutStr == "" { - flag.StringVar(&pingTimeoutStr, "ping-timeout", "2s", " Timeout for each ping (default 2s)") + flag.StringVar(&pingTimeoutStr, "ping-timeout", "3s", " Timeout for each ping (default 3s)") } if pingIntervalStr != "" { pingInterval, err = time.ParseDuration(pingIntervalStr) if err != nil { fmt.Printf("Invalid PING_INTERVAL value: %s, using default 1 second\n", pingIntervalStr) - pingInterval = 1 * time.Second + pingInterval = 3 * time.Second } } @@ -169,7 +169,7 @@ func main() { pingTimeout, err = time.ParseDuration(pingTimeoutStr) if err != nil { fmt.Printf("Invalid PING_TIMEOUT value: %s, using default 2 seconds\n", pingTimeoutStr) - pingTimeout = 2 * time.Second + pingTimeout = 3 * time.Second } } diff --git a/util.go b/util.go index 967f12e..068a9f7 100644 --- a/util.go +++ b/util.go @@ -175,9 +175,8 @@ func pingWithRetry(tnet *netstack.Net, dst string, timeout time.Duration) (stopC } func startPingCheck(tnet *netstack.Net, serverIP string, client *websocket.Client) chan struct{} { - initialInterval := pingInterval - maxInterval := 3 * time.Second - currentInterval := initialInterval + maxInterval := 6 * time.Second + currentInterval := pingInterval consecutiveFailures := 0 connectionLost := false @@ -192,12 +191,12 @@ func startPingCheck(tnet *netstack.Net, serverIP string, client *websocket.Clien _, err := ping(tnet, serverIP, pingTimeout) if err != nil { consecutiveFailures++ - if consecutiveFailures == 1 { + if consecutiveFailures < 4 { logger.Debug("Periodic ping failed (%d consecutive failures): %v", consecutiveFailures, err) } else { logger.Warn("Periodic ping failed (%d consecutive failures): %v", consecutiveFailures, err) } - if consecutiveFailures >= 3 && currentInterval < maxInterval { + if consecutiveFailures >= 8 && currentInterval < maxInterval { if !connectionLost { connectionLost = true logger.Warn("Connection to server lost. Continuous reconnection attempts will be made.") @@ -235,10 +234,10 @@ func startPingCheck(tnet *netstack.Net, serverIP string, client *websocket.Clien } } } - if currentInterval > initialInterval { + if currentInterval > pingInterval { currentInterval = time.Duration(float64(currentInterval) * 0.8) - if currentInterval < initialInterval { - currentInterval = initialInterval + if currentInterval < pingInterval { + currentInterval = pingInterval } ticker.Reset(currentInterval) logger.Info("Decreased ping check interval to %v after successful ping", currentInterval)