aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorj-berman <justinberman@protonmail.com>2026-04-21 12:00:56 -0700
committerj-berman <justinberman@protonmail.com>2026-04-21 12:01:48 -0700
commit14e333217e968416a521568ed2ef4868bb162b26 (patch)
treea9a79cbe67fe4788541825e7d38e05ed05dcc84b
parent8b6be66bef8cce6e074074b7329be9509b93dbb8 (diff)
downloadmonzero-core-14e333217e968416a521568ed2ef4868bb162b26.tar.gz
monzero-core-14e333217e968416a521568ed2ef4868bb162b26.tar.xz
monzero-core-14e333217e968416a521568ed2ef4868bb162b26.zip
connection: try-catch handles
-rw-r--r--contrib/epee/include/misc_log_ex.h11
-rw-r--r--contrib/epee/include/net/abstract_tcp_server2.inl7
-rw-r--r--src/cryptonote_protocol/block_queue.cpp6
3 files changed, 20 insertions, 4 deletions
diff --git a/contrib/epee/include/misc_log_ex.h b/contrib/epee/include/misc_log_ex.h
index 701f8f102..7350d84f4 100644
--- a/contrib/epee/include/misc_log_ex.h
+++ b/contrib/epee/include/misc_log_ex.h
@@ -172,6 +172,17 @@ namespace debug
return return_val; \
}
+#define CATCH_ENTRY_SWALLOW_EX(location) } \
+ catch(const std::exception& ex) \
+{ \
+ (void)(ex); \
+ LOG_ERROR("Exception at [" << location << "], what=" << ex.what()); \
+}\
+ catch(...)\
+{\
+ LOG_ERROR("Exception at [" << location << "], generic exception \"...\"");\
+}
+
#define CATCH_ENTRY_L0(lacation, return_val) CATCH_ENTRY(lacation, return_val)
#define CATCH_ENTRY_L1(lacation, return_val) CATCH_ENTRY(lacation, return_val)
#define CATCH_ENTRY_L2(lacation, return_val) CATCH_ENTRY(lacation, return_val)
diff --git a/contrib/epee/include/net/abstract_tcp_server2.inl b/contrib/epee/include/net/abstract_tcp_server2.inl
index 60cc1b55f..a419fe4e7 100644
--- a/contrib/epee/include/net/abstract_tcp_server2.inl
+++ b/contrib/epee/include/net/abstract_tcp_server2.inl
@@ -423,10 +423,13 @@ namespace net_utils
boost::asio::post(
connection_basic::strand_,
[this, self, bytes_transferred]{
- bool success = m_handler.handle_recv(
+ bool success = false;
+ TRY_ENTRY();
+ success = m_handler.handle_recv(
reinterpret_cast<char *>(m_state.data.read.buffer.data()),
bytes_transferred
);
+ CATCH_ENTRY_SWALLOW_EX("m_handler.handle_recv");
std::lock_guard<std::mutex> guard(m_state.lock);
const bool error_status = m_state.status == status_t::INTERRUPTED
|| m_state.status == status_t::TERMINATING
@@ -1186,7 +1189,9 @@ namespace net_utils
auto self = connection<T>::shared_from_this();
++m_state.protocol.wait_callback;
boost::asio::post(connection_basic::strand_, [this, self]{
+ TRY_ENTRY();
m_handler.handle_qued_callback();
+ CATCH_ENTRY_SWALLOW_EX("m_handler.handle_qued_callback");
std::lock_guard<std::mutex> guard(m_state.lock);
--m_state.protocol.wait_callback;
if (m_state.status == status_t::INTERRUPTED)
diff --git a/src/cryptonote_protocol/block_queue.cpp b/src/cryptonote_protocol/block_queue.cpp
index 7eadb72f2..b8fdb6b10 100644
--- a/src/cryptonote_protocol/block_queue.cpp
+++ b/src/cryptonote_protocol/block_queue.cpp
@@ -338,10 +338,10 @@ std::pair<uint64_t, uint64_t> block_queue::get_next_span_if_scheduled(std::vecto
void block_queue::reset_next_span_time(boost::posix_time::ptime t)
{
boost::unique_lock<boost::recursive_mutex> lock(mutex);
- CHECK_AND_ASSERT_THROW_MES(!blocks.empty(), "No next span to reset time");
+ CHECK_AND_ASSERT_MES_NO_RET(!blocks.empty(), "No next span to reset time");
block_map::iterator i = blocks.begin();
- CHECK_AND_ASSERT_THROW_MES(i != blocks.end(), "No next span to reset time");
- CHECK_AND_ASSERT_THROW_MES(i->blocks.empty(), "Next span is not empty");
+ CHECK_AND_ASSERT_MES_NO_RET(i != blocks.end(), "No next span to reset time");
+ CHECK_AND_ASSERT_MES_NO_RET(i->blocks.empty(), "Next span is not empty");
(boost::posix_time::ptime&)i->time = t; // sod off, time doesn't influence sorting
}