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.
This commit is contained in:
Matthew Holt 2019-03-27 12:36:30 -06:00
parent a8dc73b4d9
commit 27ff6aeccb
4 changed files with 7 additions and 6 deletions

4
.gitignore vendored
View file

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

View file

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

View file

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

View file

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