Browse Source

Fix goroutine leak in Run

D'oh, the servers' Shutdown() would never be called because they were
never added to the list of servers.

Thanks Danny for finding this.
master
Matthew Holt 6 years ago
parent
commit
27ff6aeccb
  1. 6
      .gitignore
  2. 2
      admin.go
  3. 4
      caddy.go
  4. 1
      modules/caddyhttp/caddyhttp.go

6
.gitignore

@ -1 +1,5 @@
_gitignore/
_gitignore/
# artifacts from pprof tooling
*.prof
*.test

2
admin.go

@ -33,7 +33,7 @@ func StartAdmin(addr string) error {
mux := http.NewServeMux()
mux.HandleFunc("/load", handleLoadConfig)
///// BEGIN PPROF STUFF //////
///// BEGIN PPROF STUFF (TODO: Temporary) /////
mux.HandleFunc("/debug/pprof/", pprof.Index)
mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
mux.HandleFunc("/debug/pprof/profile", pprof.Profile)

4
caddy.go

@ -4,7 +4,6 @@ import (
"encoding/json"
"fmt"
"log"
"runtime/debug"
"strings"
"sync"
"time"
@ -49,9 +48,6 @@ func Start(cfg Config) error {
currentCfg = &cfg
currentCfgMu.Unlock()
// TODO: debugging memory leak...
debug.FreeOSMemory()
return nil
}

1
modules/caddyhttp/caddyhttp.go

@ -49,6 +49,7 @@ func (hc *httpModuleConfig) Run() error {
return fmt.Errorf("%s: listening on %s: %v", proto, addr, err)
}
go s.Serve(ln)
hc.servers = append(hc.servers, s)
}
}
}

Loading…
Cancel
Save