From 796a4a693af0f63fe8b1a0aa570a02edfa3e9f71 Mon Sep 17 00:00:00 2001 From: yusing Date: Sat, 30 Nov 2024 08:50:02 +0800 Subject: [PATCH] entrypoint middleware mutex --- internal/entrypoint/entrypoint.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/internal/entrypoint/entrypoint.go b/internal/entrypoint/entrypoint.go index fbd703f..7e37cb2 100644 --- a/internal/entrypoint/entrypoint.go +++ b/internal/entrypoint/entrypoint.go @@ -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,8 +51,14 @@ 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) - return + epMiddlewareMu.Lock() + if epMiddleware != nil { + mid := epMiddleware + epMiddlewareMu.Unlock() + mid.ServeHTTP(mux.ServeHTTP, w, r) + return + } + epMiddlewareMu.Unlock() } mux.ServeHTTP(w, r) return