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 } }