diff options
Diffstat (limited to 'block_pool.go')
-rw-r--r-- | block_pool.go | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/block_pool.go b/block_pool.go index 090871fd3..69c7a54de 100644 --- a/block_pool.go +++ b/block_pool.go @@ -314,11 +314,10 @@ out: // sm.eth.EventMux().Post(NewBlockEvent{block}) // otherwise process and don't emit anything if len(blocks) > 0 { - chainManager := self.eth.ChainManager() - // Test and import - bchain := chain.NewChain(blocks) - _, err := chainManager.TestChain(bchain) - if err != nil && !chain.IsTDError(err) { + chainman := self.eth.ChainManager() + + err := chainman.InsertChain(blocks) + if err != nil { poollogger.Debugln(err) self.Reset() @@ -332,12 +331,37 @@ out: self.peer.StopWithReason(DiscBadPeer) self.td = ethutil.Big0 self.peer = nil - } else { - chainManager.InsertChain(bchain) + for _, block := range blocks { self.Remove(block.Hash()) } } + + /* + // Test and import + bchain := chain.NewChain(blocks) + _, err := chainManager.TestChain(bchain) + if err != nil && !chain.IsTDError(err) { + poollogger.Debugln(err) + + self.Reset() + + if self.peer != nil && self.peer.conn != nil { + poollogger.Debugf("Punishing peer for supplying bad chain (%v)\n", self.peer.conn.RemoteAddr()) + } + + // This peer gave us bad hashes and made us fetch a bad chain, therefor he shall be punished. + self.eth.BlacklistPeer(self.peer) + self.peer.StopWithReason(DiscBadPeer) + self.td = ethutil.Big0 + self.peer = nil + } else { + chainManager.InsertChain(bchain) + for _, block := range blocks { + self.Remove(block.Hash()) + } + } + */ } } } |