From 1d2e00cf59b9b5996c14511df7ea4059f133ab5b Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Mon, 21 Sep 2026 19:47:16 +0200 Subject: [PATCH] fix(06-14): actually reuse built middleware factories per name:param The built cache added in 06-12 was declared but never consulted, so every route re-invoked the factory on BuildRouter and again on compile. --- surf/router.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/surf/router.go b/surf/router.go index fd88af4..afa749c 100644 --- a/surf/router.go +++ b/surf/router.go @@ -398,7 +398,12 @@ func (r *Router) wrap(rt route) (http.Handler, error) { return nil, fmt.Errorf("surf: plugin %q: %w", rt.pluginID, err) } } - h = factory.fn(param)(h) + mw, ok := r.built[name] + if !ok { + mw = factory.fn(param) + r.built[name] = mw + } + h = mw(h) continue } }