eth/downloader: ensure cancel channel is closed post sync
This commit is contained in:
@ -188,7 +188,17 @@ func (dl *downloadTester) sync(id string, td *big.Int, mode SyncMode) error {
|
||||
}
|
||||
}
|
||||
dl.lock.RUnlock()
|
||||
return dl.downloader.synchronise(id, hash, td, mode)
|
||||
|
||||
// Synchronise with the chosen peer and ensure proper cleanup afterwards
|
||||
err := dl.downloader.synchronise(id, hash, td, mode)
|
||||
select {
|
||||
case <-dl.downloader.cancelCh:
|
||||
// Ok, downloader fully cancelled after sync cycle
|
||||
default:
|
||||
// Downloader is still accepting packets, can block a peer up
|
||||
panic("downloader active post sync cycle") // panic will be caught by tester
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// hasHeader checks if a header is present in the testers canonical chain.
|
||||
|
Reference in New Issue
Block a user