aboutsummaryrefslogtreecommitdiff
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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);