Commit 65f87fd7 authored by Jeromy's avatar Jeromy

if bucket doesnt have enough peers, grab more elsewhere

License: MIT
Signed-off-by: default avatarJeromy <jeromyj@gmail.com>
parent 09254bf8
...@@ -32,10 +32,6 @@ func copyPeersFromList(target ID, peerArr peerSorterArr, peerList *list.List) pe ...@@ -32,10 +32,6 @@ func copyPeersFromList(target ID, peerArr peerSorterArr, peerList *list.List) pe
distance: xor(target, pID), distance: xor(target, pID),
} }
peerArr = append(peerArr, &pd) peerArr = append(peerArr, &pd)
if e == nil {
log.Debug("list element was nil")
return peerArr
}
} }
return peerArr return peerArr
} }
......
...@@ -155,9 +155,10 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID { ...@@ -155,9 +155,10 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID {
bucket = rt.Buckets[cpl] bucket = rt.Buckets[cpl]
var peerArr peerSorterArr var peerArr peerSorterArr
if bucket.Len() == 0 { peerArr = copyPeersFromList(id, peerArr, bucket.list)
// In the case of an unusual split, one bucket may be empty. if len(peerArr) < count {
// if this happens, search both surrounding buckets for nearest peer // 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 { if cpl > 0 {
plist := rt.Buckets[cpl-1].list plist := rt.Buckets[cpl-1].list
peerArr = copyPeersFromList(id, peerArr, plist) peerArr = copyPeersFromList(id, peerArr, plist)
...@@ -167,8 +168,6 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID { ...@@ -167,8 +168,6 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID {
plist := rt.Buckets[cpl+1].list plist := rt.Buckets[cpl+1].list
peerArr = copyPeersFromList(id, peerArr, plist) peerArr = copyPeersFromList(id, peerArr, plist)
} }
} else {
peerArr = copyPeersFromList(id, peerArr, bucket.list)
} }
// Sort by distance to local peer // Sort by distance to local peer
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment