From b55a33fd2bae7b0acc0f28d896854be038b3a1f0 Mon Sep 17 00:00:00 2001 From: loonycyborg Date: Thu, 24 Mar 2022 13:32:05 +0300 Subject: [PATCH] Fix graceful shutdown Don't instantly shut down server in response to accept failure when not accepting connections. --- src/server/common/server_base.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/server/common/server_base.cpp b/src/server/common/server_base.cpp index e0858b9f328..0656963aea7 100644 --- a/src/server/common/server_base.cpp +++ b/src/server/common/server_base.cpp @@ -116,13 +116,15 @@ void server_base::serve(boost::asio::yield_context yield, boost::asio::ip::tcp:: boost::system::error_code error; acceptor.async_accept(socket->lowest_layer(), yield[error]); - if(error) { + if(error && accepting_connections()) { ERR_SERVER << "Accept failed: " << error.message() << "\n"; BOOST_THROW_EXCEPTION(server_shutdown("Accept failed", error)); } if(accepting_connections()) { boost::asio::spawn(io_service_, [this, &acceptor, endpoint](boost::asio::yield_context yield) { serve(yield, acceptor, endpoint); }); + } else { + return; } #ifndef _WIN32