diff --git a/http/http_client.hpp b/http/http_client.hpp
index 8161eb1..2b498b7 100644
--- a/http/http_client.hpp
+++ b/http/http_client.hpp
@@ -169,7 +169,7 @@
 
     void afterResolve(
         const std::shared_ptr<ConnectionInfo>& /*self*/,
-        const boost::beast::error_code ec,
+        const boost::beast::error_code& ec,
         const std::vector<boost::asio::ip::tcp::endpoint>& endpointList)
     {
         if (ec || (endpointList.empty()))
@@ -197,7 +197,7 @@
     }
 
     void afterConnect(const std::shared_ptr<ConnectionInfo>& /*self*/,
-                      boost::beast::error_code ec,
+                      const boost::beast::error_code& ec,
                       const boost::asio::ip::tcp::endpoint& endpoint)
     {
         // The operation already timed out.  We don't want do continue down
@@ -246,7 +246,7 @@
     }
 
     void afterSslHandshake(const std::shared_ptr<ConnectionInfo>& /*self*/,
-                           boost::beast::error_code ec)
+                           const boost::beast::error_code& ec)
     {
         // The operation already timed out.  We don't want do continue down
         // this branch
diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index 2139602..7b66ac8 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -602,7 +602,7 @@
 
         std::weak_ptr<Connection<Adaptor, Handler>> weakSelf = weak_from_this();
         timer.expires_after(timeout);
-        timer.async_wait([weakSelf](const boost::system::error_code ec) {
+        timer.async_wait([weakSelf](const boost::system::error_code& ec) {
             // Note, we are ignoring other types of errors here;  If the timer
             // failed for any reason, we should still close the connection
             std::shared_ptr<Connection<Adaptor, Handler>> self =
diff --git a/include/obmc_console.hpp b/include/obmc_console.hpp
index 3ab13ee..fac489a 100644
--- a/include/obmc_console.hpp
+++ b/include/obmc_console.hpp
@@ -50,7 +50,7 @@
     doingWrite = true;
     hostSocket->async_write_some(
         boost::asio::buffer(inputBuffer.data(), inputBuffer.size()),
-        [](boost::beast::error_code ec, std::size_t bytesWritten) {
+        [](const boost::beast::error_code& ec, std::size_t bytesWritten) {
         doingWrite = false;
         inputBuffer.erase(0, bytesWritten);
 
diff --git a/include/vm_websocket.hpp b/include/vm_websocket.hpp
index 89270d9..fed3681 100644
--- a/include/vm_websocket.hpp
+++ b/include/vm_websocket.hpp
@@ -90,7 +90,7 @@
         doingWrite = true;
         pipeIn.async_write_some(
             inputBuffer->data(),
-            [this, self(shared_from_this())](boost::beast::error_code ec,
+            [this, self(shared_from_this())](const boost::beast::error_code& ec,
                                              std::size_t bytesWritten) {
             BMCWEB_LOG_DEBUG << "Wrote " << bytesWritten << "bytes";
             doingWrite = false;
diff --git a/redfish-core/include/server_sent_events.hpp b/redfish-core/include/server_sent_events.hpp
index 1592d50..695c483 100644
--- a/redfish-core/include/server_sent_events.hpp
+++ b/redfish-core/include/server_sent_events.hpp
@@ -113,7 +113,7 @@
         sseConn->async_write_some(
             boost::asio::buffer(outBuffer.data(), outBuffer.size()),
             [self(shared_from_this())](
-                boost::beast::error_code ec,
+                const boost::beast::error_code& ec,
                 [[maybe_unused]] const std::size_t& bytesTransferred) {
             self->outBuffer.erase(0, bytesTransferred);
 
diff --git a/redfish-core/lib/aggregation_service.hpp b/redfish-core/lib/aggregation_service.hpp
index 9874d14..6c93613 100644
--- a/redfish-core/lib/aggregation_service.hpp
+++ b/redfish-core/lib/aggregation_service.hpp
@@ -66,7 +66,7 @@
 
 inline void populateAggregationSourceCollection(
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
-    const boost::system::error_code ec,
+    const boost::system::error_code& ec,
     const std::unordered_map<std::string, boost::urls::url>& satelliteInfo)
 {
     // Something went wrong while querying dbus
@@ -138,7 +138,7 @@
 inline void populateAggregationSource(
     const std::string& aggregationSourceId,
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
-    const boost::system::error_code ec,
+    const boost::system::error_code& ec,
     const std::unordered_map<std::string, boost::urls::url>& satelliteInfo)
 {
     asyncResp->res.addHeader(
diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index 736b158..1cedf2d 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -2974,7 +2974,7 @@
         if (protocolName == "SSH")
         {
             getPortNumber(socketPath, [asyncResp, protocolName](
-                                          const boost::system::error_code ec1,
+                                          const boost::system::error_code& ec1,
                                           int portNumber) {
                 if (ec1)
                 {
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index 7c8ce01..ddb46f6 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -575,7 +575,7 @@
 
     // Set the requested image apply time value
     crow::connections::systemBus->async_method_call(
-        [asyncResp](const boost::system::error_code ec) {
+        [asyncResp](const boost::system::error_code& ec) {
         if (ec)
         {
             BMCWEB_LOG_ERROR << "D-Bus responses error: " << ec;
