提交 260e7a00 作者: Jeromy

sort peers outside of locks

License: MIT
Signed-off-by: 's avatarJeromy <why@ipfs.io>
上级 44c87461
...@@ -144,10 +144,10 @@ func (rt *RoutingTable) NearestPeer(id ID) peer.ID { ...@@ -144,10 +144,10 @@ func (rt *RoutingTable) NearestPeer(id ID) peer.ID {
// NearestPeers returns a list of the 'count' closest peers to the given ID // NearestPeers returns a list of the 'count' closest peers to the given ID
func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID { func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID {
rt.tabLock.RLock()
defer rt.tabLock.RUnlock()
cpl := commonPrefixLen(id, rt.local) cpl := commonPrefixLen(id, rt.local)
rt.tabLock.RLock()
// Get bucket at cpl index or last bucket // Get bucket at cpl index or last bucket
var bucket *Bucket var bucket *Bucket
if cpl >= len(rt.Buckets) { if cpl >= len(rt.Buckets) {
...@@ -170,6 +170,7 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID { ...@@ -170,6 +170,7 @@ func (rt *RoutingTable) NearestPeers(id ID, count int) []peer.ID {
peerArr = copyPeersFromList(id, peerArr, plist) peerArr = copyPeersFromList(id, peerArr, plist)
} }
} }
rt.tabLock.RUnlock()
// Sort by distance to local peer // Sort by distance to local peer
sort.Sort(peerArr) sort.Sort(peerArr)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论