wallet: guard against exception in process_blocks
If an exception occurs, the thread needs to be joined, or it will be deleted while still live, and terminate the process.
This commit is contained in:
parent
b91fc2dc3c
commit
2cf8b32229
|
@ -701,7 +701,15 @@ void wallet2::refresh(uint64_t start_height, uint64_t & blocks_fetched, bool& re
|
||||||
bool error = false;
|
bool error = false;
|
||||||
pull_thread = std::thread([&]{pull_next_blocks(start_height, next_blocks_start_height, short_chain_history, blocks, next_blocks, error);});
|
pull_thread = std::thread([&]{pull_next_blocks(start_height, next_blocks_start_height, short_chain_history, blocks, next_blocks, error);});
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
process_blocks(blocks_start_height, blocks, added_blocks);
|
process_blocks(blocks_start_height, blocks, added_blocks);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
pull_thread.join();
|
||||||
|
throw;
|
||||||
|
}
|
||||||
blocks_fetched += added_blocks;
|
blocks_fetched += added_blocks;
|
||||||
pull_thread.join();
|
pull_thread.join();
|
||||||
if(!added_blocks)
|
if(!added_blocks)
|
||||||
|
|
Loading…
Reference in New Issue