diff --git a/requester/handler.hpp b/requester/handler.hpp
index bdcd7ee..ece1382 100644
--- a/requester/handler.hpp
+++ b/requester/handler.hpp
@@ -138,8 +138,8 @@
                     "EID", (unsigned)key.eid, "INST_ID",
                     (unsigned)key.instanceId, "REQ_KEY_TYPE",
                     (unsigned)key.type, "REQ_KEY_CMD", (unsigned)key.command);
-                auto& [request, responseHandler, timerInstance] =
-                    this->handlers[key];
+                auto& [request, responseHandler,
+                       timerInstance] = this->handlers[key];
                 request->stop();
                 auto rc = timerInstance->stop();
                 if (rc)
@@ -244,10 +244,10 @@
     int currentSendbuffSize;              //!< current Send Buffer size
     bool verbose;                         //!< verbose tracing flag
     std::chrono::seconds
-        instanceIdExpiryInterval; //!< Instance ID expiration interval
-    uint8_t numRetries;           //!< number of request retries
+        instanceIdExpiryInterval;         //!< Instance ID expiration interval
+    uint8_t numRetries;                   //!< number of request retries
     std::chrono::milliseconds
-        responseTimeOut; //!< time to wait between each retry
+        responseTimeOut;                  //!< time to wait between each retry
 
     /** @brief Container for storing the details of the PLDM request
      *         message, handler for the corresponding PLDM response and the
diff --git a/requester/mctp_endpoint_discovery.hpp b/requester/mctp_endpoint_discovery.hpp
index 8f7e7eb..7fbe069 100644
--- a/requester/mctp_endpoint_discovery.hpp
+++ b/requester/mctp_endpoint_discovery.hpp
@@ -43,4 +43,4 @@
         "xyz.openbmc_project.MCTP.Endpoint"};
 };
 
-} // namespace pldm
\ No newline at end of file
+} // namespace pldm
diff --git a/requester/request.hpp b/requester/request.hpp
index 25e0030..2c216da 100644
--- a/requester/request.hpp
+++ b/requester/request.hpp
@@ -182,9 +182,9 @@
         {
             int oldSendbuffSize = currentSendbuffSize;
             currentSendbuffSize = requestMsg.size();
-            int res =
-                setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &currentSendbuffSize,
-                           sizeof(currentSendbuffSize));
+            int res = setsockopt(fd, SOL_SOCKET, SO_SNDBUF,
+                                 &currentSendbuffSize,
+                                 sizeof(currentSendbuffSize));
             if (res == -1)
             {
                 error(
diff --git a/requester/test/request_test.cpp b/requester/test/request_test.cpp
index 392b9ec..2e3060d 100644
--- a/requester/test/request_test.cpp
+++ b/requester/test/request_test.cpp
@@ -18,8 +18,7 @@
 class RequestIntfTest : public testing::Test
 {
   protected:
-    RequestIntfTest() : event(sdeventplus::Event::get_default())
-    {}
+    RequestIntfTest() : event(sdeventplus::Event::get_default()) {}
 
     /** @brief This function runs the sd_event_run in a loop till all the events
      *         in the testcase are dispatched and exits when there are no events
