]> Sergey Matveev's repositories - btrtrc.git/blob - util/loghttp.go
util/loghttp: Don't implicitly expose pprof
[btrtrc.git] / util / loghttp.go
1 package util
2
3 import (
4         "log"
5         "net"
6         "net/http"
7 )
8
9 func LoggedHTTPServe(addr string) *http.ServeMux {
10         if addr == "" {
11                 addr = "localhost:6061"
12         }
13         netAddr, err := net.ResolveTCPAddr("tcp", addr)
14         if err != nil {
15                 log.Fatalf("error resolving http addr: %s", err)
16         }
17         var conn net.Listener
18         for try := 0; try < 100; try++ {
19                 conn, err = net.ListenTCP("tcp", netAddr)
20                 if err == nil {
21                         break
22                 }
23                 netAddr.Port++
24         }
25         if err != nil {
26                 log.Fatalf("error creating http conn: %#v", err)
27         }
28         log.Printf("starting http server on http://%s", conn.Addr())
29         mux := http.NewServeMux()
30         go func() {
31                 defer conn.Close()
32                 err = (&http.Server{
33                         Handler: mux,
34                 }).Serve(conn)
35                 if err != nil {
36                         log.Fatalf("error serving http: %s", err)
37                 }
38         }()
39         return mux
40 }