From d89beda042d4a43f406d36fb7bd730a3c560b72a Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Fri, 9 Dec 2011 17:54:17 -0600 Subject: [PATCH] experimental fix for server running out of FDs --- src/roles/server.hpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/roles/server.hpp b/src/roles/server.hpp index 8dcfab5df4..b667b53423 100644 --- a/src/roles/server.hpp +++ b/src/roles/server.hpp @@ -169,7 +169,8 @@ public: : m_ws_endpoint(static_cast< endpoint_type& >(*this)), m_io_service(m), m_endpoint(), - m_acceptor(m) {} + m_acceptor(m), + m_timer(m,boost::posix_time::seconds(0)) {} void listen(uint16_t port); protected: @@ -190,6 +191,8 @@ private: boost::asio::io_service& m_io_service; boost::asio::ip::tcp::endpoint m_endpoint; boost::asio::ip::tcp::acceptor m_acceptor; + + boost::asio::deadline_timer m_timer; }; // server Implimentation @@ -235,6 +238,9 @@ void server::handle_accept(connection_ptr con, m_ws_endpoint.elog().at(log::elevel::ERROR) << "async_accept returned error: " << error << " (too many files open)" << log::endl; + m_timer.expires_from_now(boost::posix_time::milliseconds(1000)); + m_timer.async_wait(boost::bind(&type::start_accept,this)); + return; } else { m_ws_endpoint.elog().at(log::elevel::ERROR) << "async_accept returned error: " << error