diff options
author | Riccardo Spagni <ric@spagni.net> | 2018-07-03 15:16:04 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2018-07-03 15:16:04 +0200 |
commit | 318fb23d7aea64c2ecdbb67dcadb3a17850d441c (patch) | |
tree | 6cf2e2ace1330216b538c9954a8015cb9865331a /contrib | |
parent | Merge pull request #4067 (diff) | |
parent | abstract_tcp_server2: restart async accept on error (diff) | |
download | monero-318fb23d7aea64c2ecdbb67dcadb3a17850d441c.tar.xz |
Merge pull request #3997
1a526ed5 abstract_tcp_server2: restart async accept on error (moneromooo-monero)
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/epee/include/net/abstract_tcp_server2.inl | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/contrib/epee/include/net/abstract_tcp_server2.inl b/contrib/epee/include/net/abstract_tcp_server2.inl index 134bb4199..7f80efb08 100644 --- a/contrib/epee/include/net/abstract_tcp_server2.inl +++ b/contrib/epee/include/net/abstract_tcp_server2.inl @@ -1030,7 +1030,8 @@ POP_WARNINGS void boosted_tcp_server<t_protocol_handler>::handle_accept(const boost::system::error_code& e) { MDEBUG("handle_accept"); - TRY_ENTRY(); + try + { if (!e) { if (m_connection_type == e_connection_type_RPC) { @@ -1048,11 +1049,25 @@ POP_WARNINGS conn->start(true, 1 < m_threads_count); conn->save_dbg_log(); - }else + return; + } + else + { + MERROR("Error in boosted_tcp_server<t_protocol_handler>::handle_accept: " << e); + } + } + catch (const std::exception &e) { - _erro("Some problems at accept: " << e.message() << ", connections_count = " << m_sock_count); + MERROR("Exception in boosted_tcp_server<t_protocol_handler>::handle_accept: " << e.what()); } - CATCH_ENTRY_L0("boosted_tcp_server<t_protocol_handler>::handle_accept", void()); + + // 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<t_protocol_handler>(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<t_protocol_handler>::handle_accept, this, + boost::asio::placeholders::error)); } //--------------------------------------------------------------------------------- template<class t_protocol_handler> |