diff options
Diffstat (limited to 'contrib')
| -rw-r--r-- | contrib/epee/include/misc_log_ex.h | 11 | ||||
| -rw-r--r-- | contrib/epee/include/net/abstract_tcp_server2.inl | 7 |
2 files changed, 17 insertions, 1 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) |
