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.
This commit is contained in:
moneromooo-monero
2017-10-11 13:00:49 +01:00
parent 86e9de588c
commit 529a6a4af8

View File

@@ -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);