diff --git a/http/http_client.hpp b/http/http_client.hpp
index 62e7df6..28aeb1c 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
@@ -120,8 +120,7 @@
     PendingRequest(
         boost::beast::http::request<bmcweb::HttpBody>&& reqIn,
         const std::function<void(bool, uint32_t, Response&)>& callbackIn) :
-        req(std::move(reqIn)),
-        callback(callbackIn)
+        req(std::move(reqIn)), callback(callbackIn)
     {}
 };
 
@@ -321,8 +320,8 @@
     {
         state = ConnState::recvInProgress;
 
-        parser_type& thisParser = parser.emplace(std::piecewise_construct,
-                                                 std::make_tuple());
+        parser_type& thisParser =
+            parser.emplace(std::piecewise_construct, std::make_tuple());
 
         thisParser.body_limit(connPolicy->requestByteLimit);
 
@@ -635,9 +634,9 @@
         const std::shared_ptr<ConnectionPolicy>& connPolicyIn,
         const boost::urls::url_view_base& hostIn,
         ensuressl::VerifyCertificate verifyCertIn, unsigned int connIdIn) :
-        subId(idIn),
-        connPolicy(connPolicyIn), host(hostIn), verifyCert(verifyCertIn),
-        connId(connIdIn), ioc(iocIn), resolver(iocIn), conn(iocIn), timer(iocIn)
+        subId(idIn), connPolicy(connPolicyIn), host(hostIn),
+        verifyCert(verifyCertIn), connId(connIdIn), ioc(iocIn), resolver(iocIn),
+        conn(iocIn), timer(iocIn)
     {
         initializeConnection(host.scheme() == "https");
     }
@@ -836,8 +835,7 @@
         const std::shared_ptr<ConnectionPolicy>& connPolicyIn,
         const boost::urls::url_view_base& destIPIn,
         ensuressl::VerifyCertificate verifyCertIn) :
-        ioc(iocIn),
-        id(idIn), connPolicy(connPolicyIn), destIP(destIPIn),
+        ioc(iocIn), id(idIn), connPolicy(connPolicyIn), destIP(destIPIn),
         verifyCert(verifyCertIn)
     {
         BMCWEB_LOG_DEBUG("Initializing connection pool for {}", id);
@@ -867,8 +865,7 @@
     HttpClient() = delete;
     explicit HttpClient(boost::asio::io_context& iocIn,
                         const std::shared_ptr<ConnectionPolicy>& connPolicyIn) :
-        ioc(iocIn),
-        connPolicy(connPolicyIn)
+        ioc(iocIn), connPolicy(connPolicyIn)
     {}
 
     HttpClient(const HttpClient&) = delete;
@@ -903,9 +900,9 @@
         {
             verify = "ssl no verify";
         }
-        std::string clientKey = std::format("{}{}://{}", verify,
-                                            destUrl.scheme(),
-                                            destUrl.encoded_host_and_port());
+        std::string clientKey =
+            std::format("{}{}://{}", verify, destUrl.scheme(),
+                        destUrl.encoded_host_and_port());
         auto pool = connectionPools.try_emplace(clientKey);
         if (pool.first->second == nullptr)
         {
