aboutsummaryrefslogtreecommitdiffstats
path: root/eth/sync.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-05-10 06:34:07 +0800
committerobscuren <geffobscura@gmail.com>2015-05-10 06:34:07 +0800
commit05715f27cfd68387f720db115bb8461f8725a341 (patch)
tree33a78a81f0caa8a5c1c30aa3286d52796b2faac8 /eth/sync.go
parent45dc690947ebfe9fb3dc64ba3c74fb433b0f474d (diff)
downloaddexon-05715f27cfd68387f720db115bb8461f8725a341.tar.gz
dexon-05715f27cfd68387f720db115bb8461f8725a341.tar.zst
dexon-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.go3
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:]