diff --git a/src/roles/server.hpp b/src/roles/server.hpp index 9bbaedbd07..5e67ab9d67 100644 --- a/src/roles/server.hpp +++ b/src/roles/server.hpp @@ -230,7 +230,7 @@ private: template void server::listen(const boost::asio::ip::tcp::endpoint& e) { - boost::lock_guard lock(m_endpoint.get_lock()); + boost::unique_lock lock(m_endpoint.get_lock()); if (m_state != IDLE) { throw exception("listen called from invalid state."); @@ -242,6 +242,8 @@ void server::listen(const boost::asio::ip::tcp::endpoint& e) { m_acceptor.listen(); this->start_accept(); + + lock.unlock(); m_endpoint.run_internal(); }