diff options
| author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2017-09-10 15:33:13 +0100 |
|---|---|---|
| committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2017-09-12 12:07:10 +0100 |
| commit | 9443eec10f911b458d849424bda7747aece0166f (patch) | |
| tree | a88b11e3ad058fb7a75f9b19dfacc9f7e04c7cde | |
| parent | 02e5dcd2fab07c46b4943028cfabecbba4745b58 (diff) | |
| download | monzero-core-9443eec10f911b458d849424bda7747aece0166f.tar.gz monzero-core-9443eec10f911b458d849424bda7747aece0166f.tar.xz monzero-core-9443eec10f911b458d849424bda7747aece0166f.zip | |
core: guard against exceptions in tx verification worker threads
| -rw-r--r-- | src/cryptonote_core/cryptonote_core.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp index 73ce88c79..9bf716ff6 100644 --- a/src/cryptonote_core/cryptonote_core.cpp +++ b/src/cryptonote_core/cryptonote_core.cpp @@ -593,7 +593,15 @@ namespace cryptonote std::list<blobdata>::const_iterator it = tx_blobs.begin(); for (size_t i = 0; i < tx_blobs.size(); i++, ++it) { region.run([&, i, it] { - results[i].res = handle_incoming_tx_pre(*it, tvc[i], results[i].tx, results[i].hash, results[i].prefix_hash, keeped_by_block, relayed, do_not_relay); + try + { + results[i].res = handle_incoming_tx_pre(*it, tvc[i], results[i].tx, results[i].hash, results[i].prefix_hash, keeped_by_block, relayed, do_not_relay); + } + catch (const std::exception &e) + { + MERROR_VER("Exception in handle_incoming_tx_pre: " << e.what()); + results[i].res = false; + } }); } }); @@ -613,7 +621,15 @@ namespace cryptonote else { region.run([&, i, it] { - results[i].res = handle_incoming_tx_post(*it, tvc[i], results[i].tx, results[i].hash, results[i].prefix_hash, keeped_by_block, relayed, do_not_relay); + try + { + results[i].res = handle_incoming_tx_post(*it, tvc[i], results[i].tx, results[i].hash, results[i].prefix_hash, keeped_by_block, relayed, do_not_relay); + } + catch (const std::exception &e) + { + MERROR_VER("Exception in handle_incoming_tx_post: " << e.what()); + results[i].res = false; + } }); } } |
