mirror of
https://github.com/slackhq/nebula.git
synced 2026-09-30 03:16:38 +02:00
the definitive tun offloads branch (#1704)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
//go:build debug
|
||||
|
||||
package nebula
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
_ "net/http/pprof" // registers pprof handlers on http.DefaultServeMux
|
||||
)
|
||||
|
||||
// startPprofServer serves net/http/pprof on localhost:6060 for the life of
|
||||
// ctx. It is only compiled into debug builds (`-tags debug`, `make debug`),
|
||||
// so a debug build announces itself with the Info line below. Loopback only:
|
||||
// a wildcard bind would expose profiles (peer addresses, config-derived
|
||||
// state) to anything that can reach the host, the overlay included.
|
||||
func startPprofServer(ctx context.Context, l *slog.Logger) {
|
||||
server := &http.Server{Addr: "localhost:6060", Handler: nil}
|
||||
l.Info("Starting pprof debug server (debug build)", "addr", server.Addr)
|
||||
|
||||
go func() {
|
||||
if err := server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||
l.Error("pprof debug server stopped", "error", err)
|
||||
}
|
||||
}()
|
||||
|
||||
// Shut down the server when the context is cancelled.
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
if err := server.Shutdown(context.Background()); err != nil {
|
||||
l.Debug("Error shutting down pprof debug server", "error", err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
Reference in New Issue
Block a user