From 2b1c9501931cdfc662e2a79cfc983c095a6a1396 Mon Sep 17 00:00:00 2001 From: zelig Date: Thu, 23 Jun 2016 20:22:48 +0200 Subject: [PATCH] swarm/network: must replace node if bucket is full otherwise nodes will get stuck on empty rows --- swarm/network/kademlia/kademlia.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/swarm/network/kademlia/kademlia.go b/swarm/network/kademlia/kademlia.go index 6df255e4a1..6b7e8066ac 100644 --- a/swarm/network/kademlia/kademlia.go +++ b/swarm/network/kademlia/kademlia.go @@ -340,7 +340,11 @@ func (self *bucket) insert(node Node) (replaced Node, err error) { if len(self.nodes) >= self.size { // >= allows us to add peers beyond the bucketsize limitation // dev p2p kicks out nodes idle for > 30 s, so here we never replace nodes if // bucket is full - return nil, fmt.Errorf("bucket full") + // update, it seems we need to replace nodes + // return nil, fmt.Errorf("bucket full") + replaced := self.nodes[0] + self.nodes = append(self.nodes[1:], node) + return replaced, nil } self.nodes = append(self.nodes, node) return