@cryptotaxi247 / kubo / commits / 18099abb9

if bucket doesnt have enough peers, grab more elsewhere

License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>

Jeromy committed Nov 13, 2015 at 14:36 UTC 18099abb939c1014e816dcf5568d8b966a24d925
2 files changed +4 -9
routing/kbucket/sorting.go
-4
@@ -32,10 +32,6 @@ func copyPeersFromList(target ID, peerArr peerSorterArr, peerList *list.List) pe
32 distance: xor(target, pID),
33 }
34 peerArr = append(peerArr, &pd)
35 - if e == nil {
36 - log.Debug("list element was nil")
37 - return peerArr
38 - }
35 }
36 return peerArr
37 }
routing/kbucket/table.go
+4 -5
@@ -155,9 +155,10 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID {
155 bucket = rt.Buckets[cpl]
156
157 var peerArr peerSorterArr
158 - if bucket.Len() == 0 {
159 - // In the case of an unusual split, one bucket may be empty.
160 - // if this happens, search both surrounding buckets for nearest peer
158 + peerArr = copyPeersFromList(id, peerArr, bucket.list)
159 + if len(peerArr) < count {
160 + // In the case of an unusual split, one bucket may be short or empty.
161 + // if this happens, search both surrounding buckets for nearby peers
162 if cpl > 0 {
163 plist := rt.Buckets[cpl-1].list
164 peerArr = copyPeersFromList(id, peerArr, plist)
@@ -167,8 +168,6 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID {
168 plist := rt.Buckets[cpl+1].list
169 peerArr = copyPeersFromList(id, peerArr, plist)
170 }
170 - } else {
171 - peerArr = copyPeersFromList(id, peerArr, bucket.list)
171 }
172
173 // Sort by distance to local peer