|
|
@ -188,7 +188,17 @@ func (dl *downloadTester) sync(id string, td *big.Int, mode SyncMode) error { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
dl.lock.RUnlock() |
|
|
|
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.
|
|
|
|
// hasHeader checks if a header is present in the testers canonical chain.
|
|
|
|