wesnothd: enable keepalive on socket before accept rather than after

This commit is contained in:
loonycyborg 2021-12-20 11:29:24 +03:00
parent 2e6b69c8e3
commit e70a3bd2e0
No known key found for this signature in database
GPG key ID: 6E8233FAB8F26D61

View file

@ -114,17 +114,6 @@ void server_base::serve(boost::asio::yield_context yield, boost::asio::ip::tcp::
socket_ptr socket = std::make_shared<socket_ptr::element_type>(io_service_);
boost::system::error_code error;
acceptor.async_accept(socket->lowest_layer(), yield[error]);
if(error) {
ERR_SERVER << "Accept failed: " << error.message() << "\n";
throw 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); });
}
#ifndef _WIN32
if(keep_alive_) {
int timeout = 30;
@ -141,6 +130,17 @@ void server_base::serve(boost::asio::yield_context yield, boost::asio::ip::tcp::
}
#endif
boost::system::error_code error;
acceptor.async_accept(socket->lowest_layer(), yield[error]);
if(error) {
ERR_SERVER << "Accept failed: " << error.message() << "\n";
throw 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); });
}
DBG_SERVER << client_address(socket) << "\tnew connection tentatively accepted\n";
uint32_t protocol_version;