From d9ddb73a74f78fddaedc14a77b99078e2378966d Mon Sep 17 00:00:00 2001 From: moe Date: Sat, 25 Dec 2021 22:48:03 +0100 Subject: [PATCH] prevents data race in server.stop() - see bug #1661 --- src/asio_server.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/asio_server.cc b/src/asio_server.cc index 74c92276..dbb72462 100644 --- a/src/asio_server.cc +++ b/src/asio_server.cc @@ -188,7 +188,13 @@ void server::start_accept(tcp::acceptor &acceptor, serve_mux &mux) { void server::stop() { for (auto &acceptor : acceptors_) { - acceptor.close(); + std::promise promise; + GET_IO_SERVICE ( acceptor ).dispatch ( [&acceptor, &promise]() { + boost::system::error_code ignored_ec; + acceptor.close ( ignored_ec ); + promise.set_value(); + } ); + promise.get_future().get(); } io_service_pool_.stop(); }