diff options
Diffstat (limited to 'middleware/pprof/setup.go')
-rw-r--r-- | middleware/pprof/setup.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/middleware/pprof/setup.go b/middleware/pprof/setup.go new file mode 100644 index 000000000..2b6701f35 --- /dev/null +++ b/middleware/pprof/setup.go @@ -0,0 +1,40 @@ +package pprof + +import ( + "sync" + + "github.com/mholt/caddy" +) + +func init() { + caddy.RegisterPlugin("pprof", caddy.Plugin{ + ServerType: "dns", + Action: setup, + }) +} + +func setup(c *caddy.Controller) error { + found := false + for c.Next() { + if found { + return c.Err("pprof can only be specified once") + } + if len(c.RemainingArgs()) != 0 { + return c.ArgErr() + } + if c.NextBlock() { + return c.ArgErr() + } + found = true + } + + handler := &Handler{} + pprofOnce.Do(func() { + c.OnStartup(handler.Startup) + c.OnShutdown(handler.Shutdown) + }) + + return nil +} + +var pprofOnce sync.Once |