diff --git a/include/image_upload.hpp b/include/image_upload.hpp
index aefb27e..0fff1ea 100644
--- a/include/image_upload.hpp
+++ b/include/image_upload.hpp
@@ -59,32 +59,31 @@
 
     std::function<void(sdbusplus::message::message&)> callback =
         [asyncResp](sdbusplus::message::message& m) {
-            BMCWEB_LOG_DEBUG << "Match fired";
+        BMCWEB_LOG_DEBUG << "Match fired";
 
-            sdbusplus::message::object_path path;
-            dbus::utility::DBusInteracesMap interfaces;
-            m.read(path, interfaces);
+        sdbusplus::message::object_path path;
+        dbus::utility::DBusInteracesMap interfaces;
+        m.read(path, interfaces);
 
-            if (std::find_if(interfaces.begin(), interfaces.end(),
-                             [](const auto& i) {
-                                 return i.first ==
-                                        "xyz.openbmc_project.Software.Version";
-                             }) != interfaces.end())
+        if (std::find_if(interfaces.begin(), interfaces.end(),
+                         [](const auto& i) {
+            return i.first == "xyz.openbmc_project.Software.Version";
+            }) != interfaces.end())
+        {
+            timeout.cancel();
+            std::string leaf = path.filename();
+            if (leaf.empty())
             {
-                timeout.cancel();
-                std::string leaf = path.filename();
-                if (leaf.empty())
-                {
-                    leaf = path.str;
-                }
-
-                asyncResp->res.jsonValue["data"] = leaf;
-                asyncResp->res.jsonValue["message"] = "200 OK";
-                asyncResp->res.jsonValue["status"] = "ok";
-                BMCWEB_LOG_DEBUG << "ending response";
-                fwUpdateMatcher = nullptr;
+                leaf = path.str;
             }
-        };
+
+            asyncResp->res.jsonValue["data"] = leaf;
+            asyncResp->res.jsonValue["message"] = "200 OK";
+            asyncResp->res.jsonValue["status"] = "ok";
+            BMCWEB_LOG_DEBUG << "ending response";
+            fwUpdateMatcher = nullptr;
+        }
+    };
     fwUpdateMatcher = std::make_unique<sdbusplus::bus::match::match>(
         *crow::connections::systemBus,
         "interface='org.freedesktop.DBus.ObjectManager',type='signal',"
@@ -116,8 +115,8 @@
         .methods(boost::beast::http::verb::post, boost::beast::http::verb::put)(
             [](const crow::Request& req,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
-                uploadImageHandler(req, asyncResp);
-            });
+        uploadImageHandler(req, asyncResp);
+        });
 }
 } // namespace image_upload
 } // namespace crow
