X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fxdsserver%2Fwebserver.go;h=a50b41e8789d4ca2d84765575f8b7fa815c6ebc7;hb=HEAD;hp=24456b9b8d74afa0d9042498cd5ccaec1b11eb39;hpb=65e09e831cf13343ac713fbf15281174d1f13a94;p=src%2Fxds%2Fxds-server.git diff --git a/lib/xdsserver/webserver.go b/lib/xdsserver/webserver.go index 24456b9..a50b41e 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,16 @@ func (s *WebServer) middlewareCORS() gin.HandlerFunc { } } +//lockRequest handles to increment/decrement xds package update +//to avoid updating xds-server when request is done +func (s *WebServer) lockRequest() gin.HandlerFunc { + return func(c *gin.Context) { + LockXdsUpdateCounter(s.Context, true) + c.Next() + LockXdsUpdateCounter(s.Context, false) + } +} + // socketHandler is the handler for the "main" websocket connection func (s *WebServer) socketHandler(c *gin.Context) {