diff options
Diffstat (limited to 'middleware/proxy/setup.go')
-rw-r--r-- | middleware/proxy/setup.go | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/middleware/proxy/setup.go b/middleware/proxy/setup.go index 2356ab962..538ecb67a 100644 --- a/middleware/proxy/setup.go +++ b/middleware/proxy/setup.go @@ -19,11 +19,24 @@ func setup(c *caddy.Controller) error { if err != nil { return middleware.Error("proxy", err) } + + P := &Proxy{} dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler { - return Proxy{Next: next, Upstreams: upstreams} + P.Next = next + P.Upstreams = &upstreams + return P }) - c.OnStartup(OnStartup) + c.OnStartup(OnStartupMetrics) + + for _, u := range upstreams { + c.OnStartup(func() error { + return u.Exchanger().OnStartup(P) + }) + c.OnShutdown(func() error { + return u.Exchanger().OnShutdown(P) + }) + } return nil } |