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() epMiddlewareMu.Lock()
defer epMiddlewareMu.Unlock() defer epMiddlewareMu.Unlock()
if len(mws) == 0 {
epMiddleware = nil
return nil
}
mid, err := middleware.BuildMiddlewareFromChainRaw("entrypoint", mws) mid, err := middleware.BuildMiddlewareFromChainRaw("entrypoint", mws)
if err != nil { if err != nil {
return err return err
} }
epMiddleware = mid epMiddleware = mid
logger.Debug().Msg("entrypoint middleware loaded")
return nil return nil
} }
@ -44,9 +51,15 @@ func Handler(w http.ResponseWriter, r *http.Request) {
mux, err := findRouteFunc(r.Host) mux, err := findRouteFunc(r.Host)
if err == nil { if err == nil {
if epMiddleware != 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 return
} }
epMiddlewareMu.Unlock()
}
mux.ServeHTTP(w, r) mux.ServeHTTP(w, r)
return return
} }