From 1c45c910ccd30daa25dd056c0409e69352379cc9 Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Wed, 23 Nov 2016 08:46:55 +0100 Subject: [PATCH] Fix panic on importing own invalid transaction (#3550) --- ethcore/src/miner/miner.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ethcore/src/miner/miner.rs b/ethcore/src/miner/miner.rs index 04aa0daba..9888b5bb9 100644 --- a/ethcore/src/miner/miner.rs +++ b/ethcore/src/miner/miner.rs @@ -470,14 +470,17 @@ impl Miner { let best_block_header: Header = ::util::rlp::decode(&chain.best_block_header()); transactions.into_iter() - .filter(|tx| match self.engine.verify_transaction_basic(tx, &best_block_header) { - Ok(()) => true, - Err(e) => { - debug!(target: "miner", "Rejected tx {:?} with invalid signature: {:?}", tx.hash(), e); - false + .map(|tx| { + match self.engine.verify_transaction_basic(&tx, &best_block_header) { + Err(e) => { + debug!(target: "miner", "Rejected tx {:?} with invalid signature: {:?}", tx.hash(), e); + Err(e) + }, + Ok(()) => { + transaction_queue.add(tx, &fetch_account, origin) + }, } }) - .map(|tx| transaction_queue.add(tx, &fetch_account, origin)) .collect() }