summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Tanous <ed@tanous.net>2024-04-16 19:59:19 +0300
committerEd Tanous <ed@tanous.net>2024-04-20 00:28:46 +0300
commit003301a24bad4cfe066bb1f5720243a3f7c45742 (patch)
treeee868aef8718083210bb800355e80417b9f91fbe
parent5b90429a75c58797ec29ac9a8ed18c2dcd7d4950 (diff)
downloadbmcweb-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.hpp4
-rw-r--r--http/http2_connection.hpp3
-rw-r--r--http/http_client.hpp4
-rw-r--r--http/http_connection.hpp3
-rw-r--r--http/http_server.hpp4
-rw-r--r--http/routing/baserule.hpp5
-rw-r--r--http/routing/sserule.hpp6
-rw-r--r--http/routing/websocketrule.hpp6
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);