Skip to content

Commit 8d14afe

Browse files
committed
p2p/discover: optimize findnodeByID
1 parent 5e6f737 commit 8d14afe

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

p2p/discover/table.go

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -254,11 +254,29 @@ func (tab *Table) findnodeByID(target enode.ID, nresults int, preferLive bool) *
254254
// is O(tab.len() * nresults).
255255
nodes := &nodesByDistance{target: target}
256256
liveNodes := &nodesByDistance{target: target}
257-
for _, b := range &tab.buckets {
258-
for _, n := range b.entries {
259-
nodes.push(n.Node, nresults)
260-
if preferLive && n.isValidatedLive {
261-
liveNodes.push(n.Node, nresults)
257+
var liveNodesFound = false
258+
if preferLive {
259+
for _, b := range &tab.buckets {
260+
for _, n := range b.entries {
261+
if n.isValidatedLive {
262+
liveNodesFound = true
263+
break
264+
}
265+
}
266+
}
267+
}
268+
if liveNodesFound {
269+
for _, b := range &tab.buckets {
270+
for _, n := range b.entries {
271+
if n.isValidatedLive {
272+
liveNodes.push(n.Node, nresults)
273+
}
274+
}
275+
}
276+
} else {
277+
for _, b := range &tab.buckets {
278+
for _, n := range b.entries {
279+
nodes.push(n.Node, nresults)
262280
}
263281
}
264282
}

0 commit comments

Comments
 (0)