From 5590daa97d4bc07b791f9813bd9924285b6bd6f8 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 6 Aug 2020 21:24:31 -0700 Subject: [PATCH] control/controlclient: reset timeout timer on non-keepalive map updates Signed-off-by: Brad Fitzpatrick --- control/controlclient/direct.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/control/controlclient/direct.go b/control/controlclient/direct.go index e5d69e373..ffe0bb1f3 100644 --- a/control/controlclient/direct.go +++ b/control/controlclient/direct.go @@ -596,17 +596,19 @@ func (c *Direct) PollNetMap(ctx context.Context, maxPolls int, cb func(*NetworkM } if resp.KeepAlive { vlogf("netmap: got keep-alive") - select { - case timeoutReset <- struct{}{}: - vlogf("netmap: sent keep-alive timer reset") - case <-ctx.Done(): - c.logf("netmap: not resetting timer for keep-alive due to: %v", ctx.Err()) - return ctx.Err() - } + } else { + vlogf("netmap: got new map") + } + select { + case timeoutReset <- struct{}{}: + vlogf("netmap: sent timer reset") + case <-ctx.Done(): + c.logf("netmap: not resetting timer; context done: %v", ctx.Err()) + return ctx.Err() + } + if resp.KeepAlive { continue } - vlogf("netmap: got new map") - if resp.DERPMap != nil { vlogf("netmap: new map contains DERP map") lastDERPMap = resp.DERPMap