diff --git a/routing/kbucket/sorting.go b/routing/kbucket/sorting.go index 31c64591a92..875b822615c 100644 --- a/routing/kbucket/sorting.go +++ b/routing/kbucket/sorting.go @@ -32,10 +32,6 @@ func copyPeersFromList(target ID, peerArr peerSorterArr, peerList *list.List) pe distance: xor(target, pID), } peerArr = append(peerArr, &pd) - if e == nil { - log.Debug("list element was nil") - return peerArr - } } return peerArr } diff --git a/routing/kbucket/table.go b/routing/kbucket/table.go index 044d3a2c289..d4cf051f330 100644 --- a/routing/kbucket/table.go +++ b/routing/kbucket/table.go @@ -155,9 +155,10 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID { bucket = rt.Buckets[cpl] var peerArr peerSorterArr - if bucket.Len() == 0 { - // In the case of an unusual split, one bucket may be empty. - // if this happens, search both surrounding buckets for nearest peer + peerArr = copyPeersFromList(id, peerArr, bucket.list) + if len(peerArr) < count { + // In the case of an unusual split, one bucket may be short or empty. + // if this happens, search both surrounding buckets for nearby peers if cpl > 0 { plist := rt.Buckets[cpl-1].list peerArr = copyPeersFromList(id, peerArr, plist) @@ -167,8 +168,6 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID { plist := rt.Buckets[cpl+1].list peerArr = copyPeersFromList(id, peerArr, plist) } - } else { - peerArr = copyPeersFromList(id, peerArr, bucket.list) } // Sort by distance to local peer