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