core: prevent crash when last block fails

This commit is contained in:
obscuren 2015-05-26 15:35:51 +02:00
parent d74ee40c86
commit eae0927597

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"io" "io"
"math/big" "math/big"
"os"
"runtime" "runtime"
"sync" "sync"
"time" "time"
@ -233,14 +234,23 @@ func (bc *ChainManager) setLastState() {
data, _ := bc.blockDb.Get([]byte("LastBlock")) data, _ := bc.blockDb.Get([]byte("LastBlock"))
if len(data) != 0 { if len(data) != 0 {
block := bc.GetBlock(common.BytesToHash(data)) block := bc.GetBlock(common.BytesToHash(data))
if block != nil {
bc.currentBlock = block bc.currentBlock = block
bc.lastBlockHash = block.Hash() bc.lastBlockHash = block.Hash()
} else { // TODO CLEAN THIS UP TMP CODE
// Set the last know difficulty (might be 0x0 as initial value, Genesis) block = bc.GetBlockByNumber(400000)
bc.td = common.BigD(bc.blockDb.LastKnownTD()) if block == nil {
fmt.Println("Fatal. LastBlock not found. Report this issue")
os.Exit(1)
}
bc.currentBlock = block
bc.lastBlockHash = block.Hash()
bc.insert(block)
}
} else { } else {
bc.Reset() bc.Reset()
} }
bc.td = bc.currentBlock.Td
bc.currentGasLimit = CalcGasLimit(bc.currentBlock) bc.currentGasLimit = CalcGasLimit(bc.currentBlock)
if glog.V(logger.Info) { if glog.V(logger.Info) {
@ -471,7 +481,7 @@ func (self *ChainManager) GetAncestors(block *types.Block, length int) (blocks [
} }
func (bc *ChainManager) setTotalDifficulty(td *big.Int) { func (bc *ChainManager) setTotalDifficulty(td *big.Int) {
bc.blockDb.Put([]byte("LTD"), td.Bytes()) //bc.blockDb.Put([]byte("LTD"), td.Bytes())
bc.td = td bc.td = td
} }