diff --git a/http/http2_connection.hpp b/http/http2_connection.hpp
index 4d1bcac..d815119 100644
--- a/http/http2_connection.hpp
+++ b/http/http2_connection.hpp
@@ -519,7 +519,7 @@
             inBuffer.consume(consumed);
 
             doRead();
-            });
+        });
     }
 
     // A mapping from http2 stream ID to Stream Data
diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index 2a6afeb..86cc49a 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -486,7 +486,7 @@
             }
 
             doRead();
-            });
+        });
     }
 
     void doRead()
@@ -529,7 +529,7 @@
 
             cancelDeadlineTimer();
             handle();
-            });
+        });
     }
 
     void doWrite(crow::Response& thisRes)
diff --git a/http/http_server.hpp b/http/http_server.hpp
index dbb95b4..b290ad7 100644
--- a/http/http_server.hpp
+++ b/http/http_server.hpp
@@ -188,7 +188,7 @@
                                   [connection] { connection->start(); });
             }
             doAccept();
-            });
+        });
     }
 
   private:
diff --git a/http/routing.hpp b/http/routing.hpp
index 49a51f1..6ab1327 100644
--- a/http/routing.hpp
+++ b/http/routing.hpp
@@ -608,7 +608,7 @@
             [&rule, asyncResp, adaptor(std::forward<Adaptor>(adaptor))](
                 Request& thisReq) mutable {
             rule.handleUpgrade(thisReq, asyncResp, std::move(adaptor));
-            });
+        });
     }
 
     void handle(Request& req,
diff --git a/http/websocket.hpp b/http/websocket.hpp
index 0fda7ee..027ab24 100644
--- a/http/websocket.hpp
+++ b/http/websocket.hpp
@@ -213,7 +213,7 @@
                 BMCWEB_LOG_ERROR("Error closing websocket {}", ec);
                 return;
             }
-            });
+        });
     }
 
     boost::urls::url_view url() override
