Remove the number of status notifications on disconnected peers (#946)

Only send notifications when disconnected once, at peer's IP update
This commit is contained in:
Maycon Santos 2023-06-11 21:51:33 +02:00 committed by GitHub
parent a0296f7839
commit c331cef242
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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()