entrypoint middleware mutex

This commit is contained in:
yusing 2024-11-30 08:50:02 +08:00
parent 1c1ba1b55e
commit 796a4a693a

View file

@ -32,11 +32,18 @@ func SetMiddlewares(mws []map[string]any) error {
epMiddlewareMu.Lock()
defer epMiddlewareMu.Unlock()
if len(mws) == 0 {
epMiddleware = nil
return nil
}
mid, err := middleware.BuildMiddlewareFromChainRaw("entrypoint", mws)
if err != nil {
return err
}
epMiddleware = mid
logger.Debug().Msg("entrypoint middleware loaded")
return nil
}
@ -44,9 +51,15 @@ func Handler(w http.ResponseWriter, r *http.Request) {
mux, err := findRouteFunc(r.Host)
if err == nil {
if epMiddleware != nil {
epMiddleware.ServeHTTP(mux.ServeHTTP, w, r)
epMiddlewareMu.Lock()
if epMiddleware != nil {
mid := epMiddleware
epMiddlewareMu.Unlock()
mid.ServeHTTP(mux.ServeHTTP, w, r)
return
}
epMiddlewareMu.Unlock()
}
mux.ServeHTTP(w, r)
return
}