mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-15 20:46:40 +00:00
p2p/discover: optimize findnodeByID
This commit is contained in:
parent
2a4847a7d1
commit
15ada877cf
1 changed files with 23 additions and 5 deletions
|
|
@ -254,11 +254,29 @@ func (tab *Table) findnodeByID(target enode.ID, nresults int, preferLive bool) *
|
||||||
// is O(tab.len() * nresults).
|
// is O(tab.len() * nresults).
|
||||||
nodes := &nodesByDistance{target: target}
|
nodes := &nodesByDistance{target: target}
|
||||||
liveNodes := &nodesByDistance{target: target}
|
liveNodes := &nodesByDistance{target: target}
|
||||||
for _, b := range &tab.buckets {
|
var liveNodesFound = false
|
||||||
for _, n := range b.entries {
|
if preferLive {
|
||||||
nodes.push(n.Node, nresults)
|
for _, b := range &tab.buckets {
|
||||||
if preferLive && n.isValidatedLive {
|
for _, n := range b.entries {
|
||||||
liveNodes.push(n.Node, nresults)
|
if n.isValidatedLive {
|
||||||
|
liveNodesFound = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if liveNodesFound {
|
||||||
|
for _, b := range &tab.buckets {
|
||||||
|
for _, n := range b.entries {
|
||||||
|
if n.isValidatedLive {
|
||||||
|
liveNodes.push(n.Node, nresults)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for _, b := range &tab.buckets {
|
||||||
|
for _, n := range b.entries {
|
||||||
|
nodes.push(n.Node, nresults)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue