diff options
author | Ed Tanous <ed@tanous.net> | 2024-04-16 19:59:19 +0300 |
---|---|---|
committer | Ed Tanous <ed@tanous.net> | 2024-04-20 00:28:46 +0300 |
commit | 003301a24bad4cfe066bb1f5720243a3f7c45742 (patch) | |
tree | ee868aef8718083210bb800355e80417b9f91fbe | |
parent | 5b90429a75c58797ec29ac9a8ed18c2dcd7d4950 (diff) | |
download | bmcweb-003301a24bad4cfe066bb1f5720243a3f7c45742.tar.xz |
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 <ed@tanous.net>
-rw-r--r-- | http/app.hpp | 4 | ||||
-rw-r--r-- | http/http2_connection.hpp | 3 | ||||
-rw-r--r-- | http/http_client.hpp | 4 | ||||
-rw-r--r-- | http/http_connection.hpp | 3 | ||||
-rw-r--r-- | http/http_server.hpp | 4 | ||||
-rw-r--r-- | http/routing/baserule.hpp | 5 | ||||
-rw-r--r-- | http/routing/sserule.hpp | 6 | ||||
-rw-r--r-- | 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 <boost/asio/io_context.hpp> #include <boost/asio/ip/tcp.hpp> #include <boost/asio/ssl/context.hpp> -#include <boost/beast/ssl/ssl_stream.hpp> +#include <boost/asio/ssl/stream.hpp> #include <chrono> #include <cstdint> @@ -32,7 +32,7 @@ namespace crow class App { public: - using ssl_socket_t = boost::beast::ssl_stream<boost::asio::ip::tcp::socket>; + using ssl_socket_t = boost::asio::ssl::stream<boost::asio::ip::tcp::socket>; 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 <boost/beast/http/read.hpp> #include <boost/beast/http/serializer.hpp> #include <boost/beast/http/write.hpp> -#include <boost/beast/ssl/ssl_stream.hpp> #include <boost/beast/websocket.hpp> #include <boost/system/error_code.hpp> @@ -545,7 +544,7 @@ class HTTP2Connection : void close() { if constexpr (std::is_same_v<Adaptor, - boost::beast::ssl_stream< + boost::asio::ssl::stream< boost::asio::ip::tcp::socket>>) { 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 <boost/asio/ip/tcp.hpp> #include <boost/asio/ssl/context.hpp> #include <boost/asio/ssl/error.hpp> +#include <boost/asio/ssl/stream.hpp> #include <boost/asio/steady_timer.hpp> #include <boost/beast/core/flat_static_buffer.hpp> #include <boost/beast/http/message.hpp> @@ -35,7 +36,6 @@ #include <boost/beast/http/parser.hpp> #include <boost/beast/http/read.hpp> #include <boost/beast/http/write.hpp> -#include <boost/beast/ssl/ssl_stream.hpp> #include <boost/container/devector.hpp> #include <boost/system/error_code.hpp> #include <boost/url/format.hpp> @@ -157,7 +157,7 @@ class ConnectionInfo : public std::enable_shared_from_this<ConnectionInfo> Resolver resolver; boost::asio::ip::tcp::socket conn; - std::optional<boost::beast::ssl_stream<boost::asio::ip::tcp::socket&>> + std::optional<boost::asio::ssl::stream<boost::asio::ip::tcp::socket&>> 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 <boost/beast/http/parser.hpp> #include <boost/beast/http/read.hpp> #include <boost/beast/http/write.hpp> -#include <boost/beast/ssl/ssl_stream.hpp> #include <boost/beast/websocket.hpp> #include <atomic> @@ -52,7 +51,7 @@ struct IsTls : std::false_type {}; template <typename T> -struct IsTls<boost::beast::ssl_stream<T>> : std::true_type +struct IsTls<boost::asio::ssl::stream<T>> : std::true_type {}; template <typename Adaptor, typename Handler> 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 <boost/asio/ip/tcp.hpp> #include <boost/asio/signal_set.hpp> #include <boost/asio/ssl/context.hpp> +#include <boost/asio/ssl/stream.hpp> #include <boost/asio/steady_timer.hpp> -#include <boost/beast/ssl/ssl_stream.hpp> #include <atomic> #include <chrono> @@ -150,7 +150,7 @@ class Server boost::asio::steady_timer timer(*ioService); std::shared_ptr<Connection<Adaptor, Handler>> connection; if constexpr (std::is_same<Adaptor, - boost::beast::ssl_stream< + boost::asio::ssl::stream< boost::asio::ip::tcp::socket>>::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 <boost/beast/ssl/ssl_stream.hpp> +#include <boost/asio/ip/tcp.hpp> +#include <boost/asio/ssl/stream.hpp> #include <memory> #include <string> @@ -48,7 +49,7 @@ class BaseRule virtual void handleUpgrade( const Request& /*req*/, const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, - boost::beast::ssl_stream<boost::asio::ip::tcp::socket>&& /*adaptor*/) + boost::asio::ssl::stream<boost::asio::ip::tcp::socket>&& /*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<bmcweb::AsyncResp>& /*asyncResp*/, - boost::beast::ssl_stream<boost::asio::ip::tcp::socket>&& + boost::asio::ssl::stream<boost::asio::ip::tcp::socket>&& adaptor) override { std::shared_ptr<crow::sse_socket::ConnectionImpl< - boost::beast::ssl_stream<boost::asio::ip::tcp::socket>>> + boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>> myConnection = std::make_shared<crow::sse_socket::ConnectionImpl< - boost::beast::ssl_stream<boost::asio::ip::tcp::socket>>>( + boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>>( 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<bmcweb::AsyncResp>& /*asyncResp*/, - boost::beast::ssl_stream<boost::asio::ip::tcp::socket>&& + boost::asio::ssl::stream<boost::asio::ip::tcp::socket>&& adaptor) override { BMCWEB_LOG_DEBUG("Websocket handles upgrade"); std::shared_ptr<crow::websocket::ConnectionImpl< - boost::beast::ssl_stream<boost::asio::ip::tcp::socket>>> + boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>> myConnection = std::make_shared<crow::websocket::ConnectionImpl< - boost::beast::ssl_stream<boost::asio::ip::tcp::socket>>>( + boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>>( req.url(), req.session, std::move(adaptor), openHandler, messageHandler, messageExHandler, closeHandler, errorHandler); myConnection->start(req); |