downloader: all handlers check for isBusy
This commit is contained in:
parent
a6c0a75f9a
commit
8f873b762b
@ -116,7 +116,7 @@ func (d *Downloader) UnregisterPeer(id string) {
|
||||
// checks fail an error will be returned. This method is synchronous
|
||||
func (d *Downloader) SynchroniseWithPeer(id string) (types.Blocks, error) {
|
||||
// Check if we're busy
|
||||
if d.isFetchingHashes() || d.isDownloadingBlocks() || d.isProcessing() {
|
||||
if d.isBusy() {
|
||||
return nil, errBusy
|
||||
}
|
||||
|
||||
@ -213,7 +213,7 @@ func (d *Downloader) selectPeer(p *peer) {
|
||||
// Make sure it's doing neither. Once done we can restart the
|
||||
// downloading process if the TD is higher. For now just get on
|
||||
// with whatever is going on. This prevents unecessary switching.
|
||||
if !(d.isFetchingHashes() || d.isDownloadingBlocks() || d.isProcessing()) {
|
||||
if !d.isBusy() {
|
||||
// selected peer must be better than our own
|
||||
// XXX we also check the peer's recent hash to make sure we
|
||||
// don't have it. Some peers report (i think) incorrect TD.
|
||||
@ -340,10 +340,6 @@ out:
|
||||
// from the available peers.
|
||||
if d.queue.hashPool.Size() > 0 {
|
||||
availablePeers := d.peers.get(idleState)
|
||||
if len(availablePeers) == 0 {
|
||||
glog.V(logger.Detail).Infoln("No peers available out of", len(d.peers))
|
||||
}
|
||||
|
||||
for _, peer := range availablePeers {
|
||||
// Get a possible chunk. If nil is returned no chunk
|
||||
// could be returned due to no hashes available.
|
||||
@ -440,7 +436,7 @@ func (d *Downloader) AddBlock(id string, block *types.Block, td *big.Int) {
|
||||
d.queue.addBlock(id, block, td)
|
||||
|
||||
// if neither go ahead to process
|
||||
if !(d.isFetchingHashes() || d.isDownloadingBlocks()) {
|
||||
if !d.isBusy() {
|
||||
// Check if the parent of the received block is known.
|
||||
// If the block is not know, request it otherwise, request.
|
||||
phash := block.ParentHash()
|
||||
@ -519,3 +515,7 @@ func (d *Downloader) isDownloadingBlocks() bool {
|
||||
func (d *Downloader) isProcessing() bool {
|
||||
return atomic.LoadInt32(&d.processingBlocks) == 1
|
||||
}
|
||||
|
||||
func (d *Downloader) isBusy() bool {
|
||||
return d.isFetchingHashes() || d.isDownloadingBlocks() || d.isProcessing()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user