aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-09-10 15:33:13 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-09-12 12:07:10 +0100
commit9443eec10f911b458d849424bda7747aece0166f (patch)
treea88b11e3ad058fb7a75f9b19dfacc9f7e04c7cde /src
parentMerge pull request #2384 (diff)
downloadmonero-9443eec10f911b458d849424bda7747aece0166f.tar.xz
core: guard against exceptions in tx verification worker threads
Diffstat (limited to 'src')
-rw-r--r--src/cryptonote_core/cryptonote_core.cpp20
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;
+ }
});
}
}