aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-10-11 13:00:49 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-10-11 13:00:49 +0100
commit529a6a4af8b5b15e4c5a53ea62d7c8dd5a656a01 (patch)
tree0f5dfeaf9fca15521ef54b34c3c31cbd4c400f0a
parentMerge pull request #2548 (diff)
downloadmonero-529a6a4af8b5b15e4c5a53ea62d7c8dd5a656a01.tar.xz
core: guard against a mined block not finding all txes in the pool
This can happen for several reasons, but mainly if another block was received, which took that tx off the pool.
-rw-r--r--src/cryptonote_core/cryptonote_core.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp
index c1a5ae324..d0196c2ae 100644
--- a/src/cryptonote_core/cryptonote_core.cpp
+++ b/src/cryptonote_core/cryptonote_core.cpp
@@ -1026,7 +1026,15 @@ namespace cryptonote
block_verification_context bvc = boost::value_initialized<block_verification_context>();
m_miner.pause();
std::list<block_complete_entry> blocks;
- blocks.push_back(get_block_complete_entry(b, m_mempool));
+ try
+ {
+ blocks.push_back(get_block_complete_entry(b, m_mempool));
+ }
+ catch (const std::exception &e)
+ {
+ m_miner.resume();
+ return false;
+ }
prepare_handle_incoming_blocks(blocks);
m_blockchain_storage.add_new_block(b, bvc);
cleanup_handle_incoming_blocks(true);