From 003301a24bad4cfe066bb1f5720243a3f7c45742 Mon Sep 17 00:00:00 2001 From: Ed Tanous Date: Tue, 16 Apr 2024 09:59:19 -0700 Subject: Change ssl stream implementations Boost beast ssl_stream is just a wrapper around asio ssl_stream, and aims to optimize the case where we're writing small payloads (one or two bytes.) which needs to be optimized in SSL. bmcweb never writes one or two bytes, we almost always write the full payload of what we received, so there's no reason to take the binary size overhead, and additional boost headers that this implementation requires. Tested: This drops the on-target binary size by 2.6% Redfish service validator passes. Change-Id: Ie1ae6f197f8e5ed70cf4abc6be9b1b382c42d64d Signed-off-by: Ed Tanous --- http/app.hpp | 4 ++-- http/http2_connection.hpp | 3 +-- http/http_client.hpp | 4 ++-- http/http_connection.hpp | 3 +-- http/http_server.hpp | 4 ++-- http/routing/baserule.hpp | 5 +++-- http/routing/sserule.hpp | 6 +++--- http/routing/websocketrule.hpp | 6 +++--- 8 files changed, 17 insertions(+), 18 deletions(-) diff --git a/http/app.hpp b/http/app.hpp index d7863f6b17..01ad7558ad 100644 --- a/http/app.hpp +++ b/http/app.hpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include @@ -32,7 +32,7 @@ namespace crow class App { public: - using ssl_socket_t = boost::beast::ssl_stream; + using ssl_socket_t = boost::asio::ssl::stream; using raw_socket_t = boost::asio::ip::tcp::socket; using socket_type = diff --git a/http/http2_connection.hpp b/http/http2_connection.hpp index 3e0c3943d5..7e8224eedf 100644 --- a/http/http2_connection.hpp +++ b/http/http2_connection.hpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include @@ -545,7 +544,7 @@ class HTTP2Connection : void close() { if constexpr (std::is_same_v>) { adaptor.next_layer().close(); diff --git a/http/http_client.hpp b/http/http_client.hpp index f44107b69f..860a7d45a8 100644 --- a/http/http_client.hpp +++ b/http/http_client.hpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -35,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -157,7 +157,7 @@ class ConnectionInfo : public std::enable_shared_from_this Resolver resolver; boost::asio::ip::tcp::socket conn; - std::optional> + std::optional> sslConn; boost::asio::steady_timer timer; diff --git a/http/http_connection.hpp b/http/http_connection.hpp index 6ec8831f52..bd8cf3190e 100644 --- a/http/http_connection.hpp +++ b/http/http_connection.hpp @@ -26,7 +26,6 @@ #include #include #include -#include #include #include @@ -52,7 +51,7 @@ struct IsTls : std::false_type {}; template -struct IsTls> : std::true_type +struct IsTls> : std::true_type {}; template diff --git a/http/http_server.hpp b/http/http_server.hpp index da73b107db..a3708944b7 100644 --- a/http/http_server.hpp +++ b/http/http_server.hpp @@ -8,8 +8,8 @@ #include #include #include +#include #include -#include #include #include @@ -150,7 +150,7 @@ class Server boost::asio::steady_timer timer(*ioService); std::shared_ptr> connection; if constexpr (std::is_same>::value) { if (adaptorCtx == nullptr) diff --git a/http/routing/baserule.hpp b/http/routing/baserule.hpp index f99e16ecf3..f6ba8d26b3 100644 --- a/http/routing/baserule.hpp +++ b/http/routing/baserule.hpp @@ -5,7 +5,8 @@ #include "privileges.hpp" #include "verb.hpp" -#include +#include +#include #include #include @@ -48,7 +49,7 @@ class BaseRule virtual void handleUpgrade( const Request& /*req*/, const std::shared_ptr& asyncResp, - boost::beast::ssl_stream&& /*adaptor*/) + boost::asio::ssl::stream&& /*adaptor*/) { asyncResp->res.result(boost::beast::http::status::not_found); } diff --git a/http/routing/sserule.hpp b/http/routing/sserule.hpp index ad05bafbe2..5b55658c79 100644 --- a/http/routing/sserule.hpp +++ b/http/routing/sserule.hpp @@ -43,13 +43,13 @@ class SseSocketRule : public BaseRule } void handleUpgrade(const Request& /*req*/, const std::shared_ptr& /*asyncResp*/, - boost::beast::ssl_stream&& + boost::asio::ssl::stream&& adaptor) override { std::shared_ptr>> + boost::asio::ssl::stream>> myConnection = std::make_shared>>( + boost::asio::ssl::stream>>( std::move(adaptor), openHandler, closeHandler); myConnection->start(); } diff --git a/http/routing/websocketrule.hpp b/http/routing/websocketrule.hpp index b52d9ec9a7..0905b08e26 100644 --- a/http/routing/websocketrule.hpp +++ b/http/routing/websocketrule.hpp @@ -43,14 +43,14 @@ class WebSocketRule : public BaseRule void handleUpgrade(const Request& req, const std::shared_ptr& /*asyncResp*/, - boost::beast::ssl_stream&& + boost::asio::ssl::stream&& adaptor) override { BMCWEB_LOG_DEBUG("Websocket handles upgrade"); std::shared_ptr>> + boost::asio::ssl::stream>> myConnection = std::make_shared>>( + boost::asio::ssl::stream>>( req.url(), req.session, std::move(adaptor), openHandler, messageHandler, messageExHandler, closeHandler, errorHandler); myConnection->start(req); -- cgit v1.2.3