aboutsummaryrefslogtreecommitdiffstats
path: root/core/headerchain.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/headerchain.go')
-rw-r--r--core/headerchain.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/core/headerchain.go b/core/headerchain.go
index 659141fd1..cdd64bb50 100644
--- a/core/headerchain.go
+++ b/core/headerchain.go
@@ -274,9 +274,14 @@ func (hc *HeaderChain) InsertHeaderChain(chain []*types.Header, writeHeader WhCa
return i, errors.New("aborted")
}
// If the header's already known, skip it, otherwise store
- if hc.HasHeader(header.Hash(), header.Number.Uint64()) {
- stats.ignored++
- continue
+ hash := header.Hash()
+ if hc.HasHeader(hash, header.Number.Uint64()) {
+ externTd := hc.GetTd(hash, header.Number.Uint64())
+ localTd := hc.GetTd(hc.currentHeaderHash, hc.CurrentHeader().Number.Uint64())
+ if externTd == nil || externTd.Cmp(localTd) <= 0 {
+ stats.ignored++
+ continue
+ }
}
if err := writeHeader(header); err != nil {
return i, err