update xds-server package in docker
[src/xds/xds-server.git] / lib / xdsserver / webserver.go
index 24456b9..2654caa 100644 (file)
@@ -84,6 +84,7 @@ func (s *WebServer) Serve() error {
        s.router.Use(gin.Recovery())
        s.router.Use(s.middlewareXDSDetails())
        s.router.Use(s.middlewareCORS())
+       s.router.Use(s.lockRequest())
 
        // Create REST API
        s.api = NewAPIV1(s.Context)
@@ -172,6 +173,18 @@ func (s *WebServer) middlewareCORS() gin.HandlerFunc {
        }
 }
 
+func (s *WebServer) lockRequest() gin.HandlerFunc {
+       return func(c *gin.Context) {
+               s.lock.Lock()
+               s.lock.LockCpt++
+               s.lock.Unlock()
+               c.Next()
+               s.lock.Lock()
+               s.lock.LockCpt--
+               s.lock.Unlock()
+       }
+}
+
 // socketHandler is the handler for the "main" websocket connection
 func (s *WebServer) socketHandler(c *gin.Context) {