From a9db1ee8d45b3395df13b27a901567fde310a3c7 Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 4 Nov 2014 13:00:47 +0100 Subject: [PATCH] Replaced to return the td and throw a specific error on TD --- chain/chain_manager.go | 9 +++------ chain/error.go | 12 ++++++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/chain/chain_manager.go b/chain/chain_manager.go index 60de377aa7..dd965e85bd 100644 --- a/chain/chain_manager.go +++ b/chain/chain_manager.go @@ -319,10 +319,7 @@ func (self *ChainManager) InsertChain(chain *BlockChain) { } } -func (self *ChainManager) TestChain(chain *BlockChain) (i int, err error) { - var ( - td *big.Int - ) +func (self *ChainManager) TestChain(chain *BlockChain) (td *big.Int, err error) { for e := chain.Front(); e != nil; e = e.Next() { var ( l = e.Value.(*link) @@ -355,9 +352,9 @@ func (self *ChainManager) TestChain(chain *BlockChain) (i int, err error) { } if td.Cmp(self.TD) <= 0 { - err = fmt.Errorf("incoming chain has a lower or equal TD (%v <= %v)", td, self.TD) + err = &TDError{td, self.TD} return } - return i, nil + return } diff --git a/chain/error.go b/chain/error.go index 204b8b8738..71bda8e7b9 100644 --- a/chain/error.go +++ b/chain/error.go @@ -114,3 +114,15 @@ func IsOutOfGasErr(err error) bool { return ok } + +type TDError struct { + a, b *big.Int +} + +func (self *TDError) Error() string { + return fmt.Sprintf("incoming chain has a lower or equal TD (%v <= %v)", self.a, self.b) +} +func IsTDError(e error) bool { + _, ok := err.(*TDError) + return ok +}