From 34069302f3c035198642764f3c6e73b79d7612aa Mon Sep 17 00:00:00 2001 From: Matthew R Kasun Date: Sun, 30 Jan 2022 10:37:35 -0500 Subject: [PATCH] use map to store last server keepalive time --- netclient/functions/daemon.go | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/netclient/functions/daemon.go b/netclient/functions/daemon.go index 654815dc..154c51d6 100644 --- a/netclient/functions/daemon.go +++ b/netclient/functions/daemon.go @@ -25,7 +25,7 @@ import ( ) // ServerKeepalive - stores time of last server keepalive message -var keepalive chan string = make(chan string) +var keepalive = make(map[string]time.Time, 3) var messageCache = make(map[string]string, 20) const lastNodeUpdate = "lnu" @@ -263,8 +263,8 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) { var shouldReSub = shouldResub(cfg.Node.NetworkSettings.DefaultServerAddrs, peerUpdate.ServerAddrs) if shouldReSub { - Resubscribe(client, &cfg) - cfg.Node.NetworkSettings.DefaultServerAddrs = peerUpdate.ServerAddrs + Resubscribe(client, &cfg) + cfg.Node.NetworkSettings.DefaultServerAddrs = peerUpdate.ServerAddrs file := ncutils.GetNetclientPathSpecific() + cfg.Node.Interface + ".conf" err = wireguard.UpdateWgPeers(file, peerUpdate.Peers) if err != nil { @@ -284,7 +284,6 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) { // MonitorKeepalive - checks time last server keepalive received. If more than 3+ minutes, notify and resubscribe func MonitorKeepalive(ctx context.Context, client mqtt.Client, cfg *config.ClientConfig) { var id string - lastUpdate := time.Now() for _, servAddr := range cfg.NetworkSettings.DefaultServerAddrs { if servAddr.IsLeader { id = servAddr.ID @@ -295,22 +294,9 @@ func MonitorKeepalive(ctx context.Context, client mqtt.Client, cfg *config.Clien case <-ctx.Done(): return case <-time.After(time.Second * 150): - if time.Since(lastUpdate) > time.Second*200 { // more than 3+ minutes + if time.Since(keepalive[id]) > time.Second*200 { // more than 3+ minutes Resubscribe(client, cfg) } - case serverID := <-keepalive: - if serverID != id { - // not my server, put back - if cfg.DebugOn { - ncutils.Log("Monitor keepalive received wrong message on channel, putting back") - } - keepalive <- serverID - } else { - lastUpdate = time.Now() - if cfg.DebugOn { - ncutils.Log("updating checking time for" + cfg.Network) - } - } } } } @@ -318,7 +304,7 @@ func MonitorKeepalive(ctx context.Context, client mqtt.Client, cfg *config.Clien // ServerKeepAlive -- handler to react to keepalive messages published by server func ServerKeepAlive(client mqtt.Client, msg mqtt.Message) { serverid := string(msg.Payload()) - keepalive <- serverid + keepalive[serverid] = time.Now() ncutils.Log("keepalive from server") }