From 81fd372b0ae7ec94fbed8a6bae1a26736cf4030f Mon Sep 17 00:00:00 2001 From: Kleissner Date: Tue, 16 Mar 2021 15:55:13 +0100 Subject: [PATCH] contactArbitraryPeer only if not already in peer list. Remove nodes from Kademlia structure when appropriate. --- Bootstrap.go | 5 +++++ Peer ID.go | 3 +++ 2 files changed, 8 insertions(+) diff --git a/Bootstrap.go b/Bootstrap.go index 74a0038..9e1c422 100644 --- a/Bootstrap.go +++ b/Bootstrap.go @@ -195,6 +195,11 @@ func autoMulticastBroadcast() { } func contactArbitraryPeer(publicKey *btcec.PublicKey, ip net.IP, port uint16) { + // check first if peer is already in the list! + if peer := PeerlistLookup(publicKey); peer != nil { + return + } + packets, err := msgEncodeAnnouncement(true, true, nil, nil, nil) if len(packets) == 0 || err != nil { return diff --git a/Peer ID.go b/Peer ID.go index 52f7e36..a8da7b4 100644 --- a/Peer ID.go +++ b/Peer ID.go @@ -112,6 +112,9 @@ func PeerlistRemove(peer *PeerInfo) { peerlistMutex.Lock() defer peerlistMutex.Unlock() + // remove from Kademlia + nodesDHT.RemoveNode(peer.NodeID) + delete(peerList, publicKey2Compressed(peer.PublicKey)) }