diff options
author | obscuren <geffobscura@gmail.com> | 2015-05-10 06:34:07 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-05-10 06:34:07 +0800 |
commit | 05715f27cfd68387f720db115bb8461f8725a341 (patch) | |
tree | 33a78a81f0caa8a5c1c30aa3286d52796b2faac8 /eth/sync.go | |
parent | 45dc690947ebfe9fb3dc64ba3c74fb433b0f474d (diff) | |
download | go-tangerine-05715f27cfd68387f720db115bb8461f8725a341.tar.gz go-tangerine-05715f27cfd68387f720db115bb8461f8725a341.tar.zst go-tangerine-05715f27cfd68387f720db115bb8461f8725a341.zip |
eth: added a cancel method for the downloader
Added a cancel method to the downloader which gracefully shuts down any
active syncing process (hash fetching or block downloading) and resets
the queue and remove any pending blocks.
Issue with the downloader which would stall because of an active ongoing
process when an invalid block was found.
Diffstat (limited to 'eth/sync.go')
-rw-r--r-- | eth/sync.go | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/eth/sync.go b/eth/sync.go index c49f5209d..d955eaa50 100644 --- a/eth/sync.go +++ b/eth/sync.go @@ -63,6 +63,9 @@ func (pm *ProtocolManager) processBlocks() error { max := int(math.Min(float64(len(blocks)), float64(blockProcAmount))) _, err := pm.chainman.InsertChain(blocks[:max]) if err != nil { + // cancel download process + pm.downloader.Cancel() + return err } blocks = blocks[max:] |