les: fix dead lock (#20828)
This commit is contained in:
parent
d6c5f2417c
commit
62cd943c7b
|
@ -531,8 +531,6 @@ func (p *serverPeer) getTxRelayCost(amount, size int) uint64 {
|
||||||
// HasBlock checks if the peer has a given block
|
// HasBlock checks if the peer has a given block
|
||||||
func (p *serverPeer) HasBlock(hash common.Hash, number uint64, hasState bool) bool {
|
func (p *serverPeer) HasBlock(hash common.Hash, number uint64, hasState bool) bool {
|
||||||
p.lock.RLock()
|
p.lock.RLock()
|
||||||
defer p.lock.RUnlock()
|
|
||||||
|
|
||||||
head := p.headInfo.Number
|
head := p.headInfo.Number
|
||||||
var since, recent uint64
|
var since, recent uint64
|
||||||
if hasState {
|
if hasState {
|
||||||
|
@ -543,6 +541,7 @@ func (p *serverPeer) HasBlock(hash common.Hash, number uint64, hasState bool) bo
|
||||||
recent = p.chainRecent
|
recent = p.chainRecent
|
||||||
}
|
}
|
||||||
hasBlock := p.hasBlock
|
hasBlock := p.hasBlock
|
||||||
|
p.lock.RUnlock()
|
||||||
|
|
||||||
return head >= number && number >= since && (recent == 0 || number+recent+4 > head) && hasBlock != nil && hasBlock(hash, number, hasState)
|
return head >= number && number >= since && (recent == 0 || number+recent+4 > head) && hasBlock != nil && hasBlock(hash, number, hasState)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue