diff options
Diffstat (limited to 'lib/xdsserver/webserver.go')
-rw-r--r-- | lib/xdsserver/webserver.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/xdsserver/webserver.go b/lib/xdsserver/webserver.go index 24456b9..2654caa 100644 --- a/lib/xdsserver/webserver.go +++ b/lib/xdsserver/webserver.go @@ -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) { |