From 802ca9aba43889714102a2d73f0b298d165e79a1 Mon Sep 17 00:00:00 2001 From: jdl Date: Mon, 15 Jun 2026 17:59:25 +0200 Subject: [PATCH] WIP: improve responsiveness. --- peer/app.go | 10 ++++++---- peer/on_pingticker.go | 15 +++++++++++++++ peer/on_tick.go | 6 ------ 3 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 peer/on_pingticker.go diff --git a/peer/app.go b/peer/app.go index 2c94a76..5f3e990 100644 --- a/peer/app.go +++ b/peer/app.go @@ -78,8 +78,8 @@ func (a *App) Run() error { // while we were down). a.updateHosts() - ticker := time.NewTicker(PingInterval) - defer ticker.Stop() + stateTicker := time.NewTicker(time.Second) // TODO: Const. + pingTicker := time.NewTicker(PingInterval) sig := make(chan os.Signal, 1) signal.Notify(sig, syscall.SIGTERM, syscall.SIGINT) @@ -97,10 +97,12 @@ func (a *App) Run() error { a.onPing(e) case e := <-a.multicastCh: a.onMulticastDiscovery(e) - case <-ticker.C: + case <-stateTicker.C: a.onTick() + case <-pingTicker.C: + a.onPingTicker() tickCount++ - if tickCount%8 == 0 { + if tickCount == 0 { a.logNetworkState() } diff --git a/peer/on_pingticker.go b/peer/on_pingticker.go new file mode 100644 index 0000000..8eb44d3 --- /dev/null +++ b/peer/on_pingticker.go @@ -0,0 +1,15 @@ +package peer + +import ( + "time" + "vppn/peer/control" +) + +func (a *App) onPingTicker() { + now := time.Now().UnixNano() + for _, p := range a.peersByIP { + if p.Role == control.Client { + a.sendPing(p, now) + } + } +} diff --git a/peer/on_tick.go b/peer/on_tick.go index 465620d..8fcf0ff 100644 --- a/peer/on_tick.go +++ b/peer/on_tick.go @@ -5,7 +5,6 @@ import ( "net/netip" "time" - "vppn/peer/control" "vppn/peer/wginterface" ) @@ -30,11 +29,6 @@ func (a *App) onTick() { p.EndpointWG = ep } - // Send pings to peers where we're the client. - if p.Role == control.Client { - a.sendPing(p, now) - } - switch p.State { case StateRelayed: // If we have an ep to probe, add it.