diff --git a/http/http_client.hpp b/http/http_client.hpp
index cb67022..99565be 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
@@ -243,13 +243,13 @@
         {
             return;
         }
+        auto& ssl = *sslConn;
         state = ConnState::handshakeInProgress;
         timer.expires_after(std::chrono::seconds(30));
         timer.async_wait(std::bind_front(onTimeout, weak_from_this()));
-        sslConn->async_handshake(
-            boost::asio::ssl::stream_base::client,
-            std::bind_front(&ConnectionInfo::afterSslHandshake, this,
-                            shared_from_this()));
+        ssl.async_handshake(boost::asio::ssl::stream_base::client,
+                            std::bind_front(&ConnectionInfo::afterSslHandshake,
+                                            this, shared_from_this()));
     }
 
     void afterSslHandshake(const std::shared_ptr<ConnectionInfo>& /*self*/,
diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index 5277981..955cb34 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -630,16 +630,17 @@
             BMCWEB_LOG_ERROR("Parser was unexpectedly null");
             return;
         }
+        auto& parse = *parser;
+        const auto& value = parser->get();
 
         if (authenticationEnabled)
         {
-            boost::beast::http::verb method = parser->get().method();
+            boost::beast::http::verb method = value.method();
             userSession = authentication::authenticate(
-                ip, res, method, parser->get().base(), mtlsSession);
+                ip, res, method, value.base(), mtlsSession);
         }
 
-        std::string_view expect =
-            parser->get()[boost::beast::http::field::expect];
+        std::string_view expect = value[boost::beast::http::field::expect];
         if (bmcweb::asciiIEquals(expect, "100-continue"))
         {
             res.result(boost::beast::http::status::continue_);
@@ -652,9 +653,9 @@
             return;
         }
 
-        parser->body_limit(getContentLengthLimit());
+        parse.body_limit(getContentLengthLimit());
 
-        if (parser->is_done())
+        if (parse.is_done())
         {
             handle();
             return;
@@ -749,18 +750,19 @@
         {
             return;
         }
+        auto& parse = *parser;
         startDeadline();
         if (httpType == HttpType::HTTP)
         {
             boost::beast::http::async_read_some(
-                adaptor.next_layer(), buffer, *parser,
+                adaptor.next_layer(), buffer, parse,
                 std::bind_front(&self_type::afterRead, this,
                                 shared_from_this()));
         }
         else
         {
             boost::beast::http::async_read_some(
-                adaptor, buffer, *parser,
+                adaptor, buffer, parse,
                 std::bind_front(&self_type::afterRead, this,
                                 shared_from_this()));
         }
