diff --git a/debug_http.go b/debug_http.go index 7c675eba..218efc4f 100644 --- a/debug_http.go +++ b/debug_http.go @@ -5,6 +5,7 @@ import ( "net/http/pprof" "runtime" "runtime/debug" + "strings" "github.com/sagernet/sing-box/common/badjson" "github.com/sagernet/sing-box/common/humanize" @@ -47,12 +48,20 @@ func applyDebugListenOption(options option.DebugOptions) { encoder.SetIndent("", " ") encoder.Encode(memObject) }) - r.HandleFunc("/pprof", pprof.Index) - r.HandleFunc("/pprof/*", pprof.Index) - r.HandleFunc("/pprof/cmdline", pprof.Cmdline) - r.HandleFunc("/pprof/profile", pprof.Profile) - r.HandleFunc("/pprof/symbol", pprof.Symbol) - r.HandleFunc("/pprof/trace", pprof.Trace) + r.Route("/pprof", func(r chi.Router) { + r.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) { + if !strings.HasSuffix(request.URL.Path, "/") { + http.Redirect(writer, request, request.URL.Path+"/", http.StatusMovedPermanently) + } else { + pprof.Index(writer, request) + } + }) + r.HandleFunc("/*", pprof.Index) + r.HandleFunc("/cmdline", pprof.Cmdline) + r.HandleFunc("/profile", pprof.Profile) + r.HandleFunc("/symbol", pprof.Symbol) + r.HandleFunc("/trace", pprof.Trace) + }) }) debugHTTPServer = &http.Server{ Addr: options.Listen, diff --git a/debug_stub.go b/debug_stub.go index ea7e2c0b..a8988c20 100644 --- a/debug_stub.go +++ b/debug_stub.go @@ -1,4 +1,4 @@ -//go:build !linux +//go:build !(linux || darwin) package box diff --git a/debug_linux.go b/debug_unix.go similarity index 93% rename from debug_linux.go rename to debug_unix.go index 3296bdec..3be097e9 100644 --- a/debug_linux.go +++ b/debug_unix.go @@ -1,3 +1,5 @@ +//go:build linux || darwin + package box import (