aboutsummaryrefslogtreecommitdiff
path: root/middleware/pprof/setup.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/pprof/setup.go')
-rw-r--r--middleware/pprof/setup.go40
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