mirror of https://github.com/poanetwork/quorum.git
les: add announcement safety check to light fetcher (#17034)
This commit is contained in:
parent
f524ec4326
commit
51df1c1f20
|
@ -267,9 +267,16 @@ func (f *lightFetcher) announce(p *peer, head *announceData) {
|
||||||
}
|
}
|
||||||
n = n.parent
|
n = n.parent
|
||||||
}
|
}
|
||||||
|
// n is now the reorg common ancestor, add a new branch of nodes
|
||||||
|
if n != nil && (head.Number >= n.number+maxNodeCount || head.Number <= n.number) {
|
||||||
|
// if announced head block height is lower or same as n or too far from it to add
|
||||||
|
// intermediate nodes then discard previous announcement info and trigger a resync
|
||||||
|
n = nil
|
||||||
|
fp.nodeCnt = 0
|
||||||
|
fp.nodeByHash = make(map[common.Hash]*fetcherTreeNode)
|
||||||
|
}
|
||||||
if n != nil {
|
if n != nil {
|
||||||
// n is now the reorg common ancestor, add a new branch of nodes
|
// check if the node count is too high to add new nodes, discard oldest ones if necessary
|
||||||
// check if the node count is too high to add new nodes
|
|
||||||
locked := false
|
locked := false
|
||||||
for uint64(fp.nodeCnt)+head.Number-n.number > maxNodeCount && fp.root != nil {
|
for uint64(fp.nodeCnt)+head.Number-n.number > maxNodeCount && fp.root != nil {
|
||||||
if !locked {
|
if !locked {
|
||||||
|
|
Loading…
Reference in New Issue