Changeset 713 in code for trunk/cmd


Ignore:
Timestamp:
Nov 17, 2021, 3:18:52 PM (4 years ago)
Author:
contact
Message:

Add pprof HTTP server

This enables production debugging of the bouncer.

Closes: https://todo.sr.ht/~emersion/soju/155

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/cmd/soju/main.go

    r712 r713  
    1010        "net"
    1111        "net/http"
     12        _ "net/http/pprof"
    1213        "net/url"
    1314        "os"
     
    287288                                }
    288289                        }()
     290                case "http+pprof":
     291                        // Only allow localhost as listening host for security reasons.
     292                        // Users can always explicitly setup reverse proxies if desirable.
     293                        hostname, _, err := net.SplitHostPort(u.Host)
     294                        if err != nil {
     295                                log.Fatalf("invalid host in URI %q: %v", listen, err)
     296                        } else if hostname != "localhost" {
     297                                log.Fatalf("pprof listening host must be localhost")
     298                        }
     299
     300                        // net/http/pprof registers its handlers in http.DefaultServeMux
     301                        httpSrv := http.Server{
     302                                Addr:    u.Host,
     303                                Handler: http.DefaultServeMux,
     304                        }
     305                        go func() {
     306                                if err := httpSrv.ListenAndServe(); err != nil {
     307                                        log.Fatalf("serving %q: %v", listen, err)
     308                                }
     309                        }()
    289310                default:
    290311                        log.Fatalf("failed to listen on %q: unsupported scheme", listen)
Note: See TracChangeset for help on using the changeset viewer.