From 27a6d6f4d337c254c732df57531e9bc3d37d70d8 Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Tue, 11 Dec 2012 06:53:43 -0600 Subject: [PATCH] Close acceptor on stop_listen. fixes #161 --- src/roles/server.hpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/roles/server.hpp b/src/roles/server.hpp index b50894b449..48f4ef9690 100644 --- a/src/roles/server.hpp +++ b/src/roles/server.hpp @@ -308,10 +308,16 @@ void server::start_listen(const boost::asio::ip::tcp::endpoint& e,size template void server::stop_listen(bool join) { - if (m_state != LISTENING) { - throw exception("stop_listen called from invalid state"); - } - + { + boost::unique_lock lock(m_endpoint.m_lock); + + if (m_state != LISTENING) { + throw exception("stop_listen called from invalid state"); + } + + m_acceptor.close(); + } + m_state = STOPPING; if(join) {