From c331cef2426a788845c6093550dd7141b29c49ea Mon Sep 17 00:00:00 2001 From: Maycon Santos Date: Sun, 11 Jun 2023 21:51:33 +0200 Subject: [PATCH] Remove the number of status notifications on disconnected peers (#946) Only send notifications when disconnected once, at peer's IP update --- client/internal/peer/status.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/client/internal/peer/status.go b/client/internal/peer/status.go index 6e436ba6e..e78aa3e5b 100644 --- a/client/internal/peer/status.go +++ b/client/internal/peer/status.go @@ -146,8 +146,7 @@ func (d *Status) UpdatePeerState(receivedState State) error { d.peers[receivedState.PubKey] = peerState - if receivedState.ConnStatus == StatusConnecting || - (receivedState.ConnStatus == StatusDisconnected && peerState.ConnStatus == StatusConnecting) { + if shouldSkipNotify(receivedState, peerState) { return nil } @@ -161,6 +160,19 @@ func (d *Status) UpdatePeerState(receivedState State) error { return nil } +func shouldSkipNotify(new, curr State) bool { + switch { + case new.ConnStatus == StatusConnecting: + return true + case new.ConnStatus == StatusDisconnected && curr.ConnStatus == StatusConnecting: + return true + case new.ConnStatus == StatusDisconnected && curr.ConnStatus == StatusDisconnected: + return curr.IP != "" + default: + return false + } +} + // UpdatePeerFQDN update peer's state fqdn only func (d *Status) UpdatePeerFQDN(peerPubKey, fqdn string) error { d.mux.Lock()