From 579adf1c8e25958c1d8d0dbf87c3eb6552b48ba7 Mon Sep 17 00:00:00 2001 From: MestryOmkar Date: Fri, 9 Nov 2018 17:23:18 +0530 Subject: [PATCH] fix tiny error when full node import block --- eth/downloader/downloader.go | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 6f27cd8e16..19c52baf81 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -1326,32 +1326,28 @@ func (d *Downloader) processFullSyncContent() error { if d.blockchain.Config() != nil && d.blockchain.Config().XDPoS != nil { epoch := d.blockchain.Config().XDPoS.Epoch gap := d.blockchain.Config().XDPoS.Gap - length := len(results) - start := int(results[0].Header.Number.Uint64() % epoch) - end := int(epoch - gap - uint64(start)) - if end < 0 { - end = end + int(epoch) - } - start = 0 - for { - if end >= length { - end = length - 1 - } - inserts := make([]*fetchResult, end-start+1) - copy(inserts, results[start:end+1]) - if len(inserts) > 0 { + inserts := []*fetchResult{} + for i := 0; i < len(results); i++ { + number := results[i].Header.Number.Uint64() % epoch + if number == 0 || number == epoch-1 || number == epoch-gap { + inserts = append(inserts, results[i]) if d.chainInsertHook != nil { d.chainInsertHook(inserts) } if err := d.importBlockResults(inserts); err != nil { return err } - + inserts = []*fetchResult{} + } else { + inserts = append(inserts, results[i]) } - start = end + 1 - end = end + int(epoch) - if start >= length { - break + } + if len(inserts) > 0 { + if d.chainInsertHook != nil { + d.chainInsertHook(inserts) + } + if err := d.importBlockResults(inserts); err != nil { + return err } } } else {