From 32a94f42a148499719cd16978ba4f23cc0bfe202 Mon Sep 17 00:00:00 2001 From: loonycyborg Date: Tue, 9 Feb 2021 18:47:55 +0300 Subject: [PATCH] Avoid extra reconnect when connecting to server with TLS disabled --- src/server/common/server_base.cpp | 6 +++++- src/wesnothd_connection.cpp | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server/common/server_base.cpp b/src/server/common/server_base.cpp index 354caef061c8..7c981615f565 100644 --- a/src/server/common/server_base.cpp +++ b/src/server/common/server_base.cpp @@ -160,7 +160,11 @@ void server_base::serve(boost::asio::yield_context yield, boost::asio::ip::tcp:: } async_write(*socket, boost::asio::buffer(handshake_response.buf, 4), yield[error]); - if(check_error(error, socket) || !tls_enabled_) return; + if(check_error(error, socket)) return; + if(!tls_enabled_) { // continue with unencrypted connection if TLS disabled + final_socket = socket; + break; + } final_socket = tls_socket_ptr { new tls_socket_ptr::element_type(std::move(*socket), tls_context_) }; utils::get(final_socket)->async_handshake(boost::asio::ssl::stream_base::server, yield[error]); diff --git a/src/wesnothd_connection.cpp b/src/wesnothd_connection.cpp index 6aea07f7d2a7..854091979bc5 100644 --- a/src/wesnothd_connection.cpp +++ b/src/wesnothd_connection.cpp @@ -175,7 +175,8 @@ void wesnothd_connection::handle_handshake(const error_code& ec) if(use_tls_) { if(handshake_response_.num == 0xFFFFFFFFU) { - fallback_to_unencrypted(); + use_tls_ = false; + handle_handshake(ec); return; }