From 1a526ed57181a837b20481d1b5d96f3713579d45 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Tue, 12 Jun 2018 07:25:01 +0100 Subject: [PATCH] abstract_tcp_server2: restart async accept on error --- .../epee/include/net/abstract_tcp_server2.inl | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/contrib/epee/include/net/abstract_tcp_server2.inl b/contrib/epee/include/net/abstract_tcp_server2.inl index 91a94c21e..0694d7baf 100644 --- a/contrib/epee/include/net/abstract_tcp_server2.inl +++ b/contrib/epee/include/net/abstract_tcp_server2.inl @@ -982,7 +982,8 @@ POP_WARNINGS void boosted_tcp_server::handle_accept(const boost::system::error_code& e) { MDEBUG("handle_accept"); - TRY_ENTRY(); + try + { if (!e) { if (m_connection_type == e_connection_type_RPC) { @@ -1000,11 +1001,25 @@ POP_WARNINGS conn->start(true, 1 < m_threads_count); conn->save_dbg_log(); - }else - { - _erro("Some problems at accept: " << e.message() << ", connections_count = " << m_sock_count); + return; } - CATCH_ENTRY_L0("boosted_tcp_server::handle_accept", void()); + else + { + MERROR("Error in boosted_tcp_server::handle_accept: " << e); + } + } + catch (const std::exception &e) + { + MERROR("Exception in boosted_tcp_server::handle_accept: " << e.what()); + } + + // error path, if e or exception + _erro("Some problems at accept: " << e.message() << ", connections_count = " << m_sock_count); + misc_utils::sleep_no_w(100); + new_connection_.reset(new connection(io_service_, m_config, m_sock_count, m_sock_number, m_pfilter, m_connection_type)); + acceptor_.async_accept(new_connection_->socket(), + boost::bind(&boosted_tcp_server::handle_accept, this, + boost::asio::placeholders::error)); } //--------------------------------------------------------------------------------- template