diff options
| -rw-r--r-- | contrib/epee/include/misc_log_ex.h | 11 | ||||
| -rw-r--r-- | contrib/epee/include/net/abstract_tcp_server2.inl | 7 | ||||
| -rw-r--r-- | src/cryptonote_protocol/block_queue.cpp | 6 |
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 } |
