X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fxdsserver%2Fwebserver.go;fp=lib%2Fxdsserver%2Fwebserver.go;h=2654caa102ee0a095bc73293f646c181ed6fedbc;hb=2e17a524738982174794370a2bb609872608a5ac;hp=24456b9b8d74afa0d9042498cd5ccaec1b11eb39;hpb=95293a7ee22cfff9c49a19bd7ae205529d812fa9;p=src%2Fxds%2Fxds-server.git 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) {