diff --git a/server/http/server.go b/server/http/server.go index bb72596..a2cdfc5 100644 --- a/server/http/server.go +++ b/server/http/server.go @@ -79,6 +79,8 @@ func (s *httpServer) Start() { return } } + + log.Println("HTTP server shut down cleanly") } func (s *httpServer) Stop() { diff --git a/server/pool.go b/server/pool.go index 91b3ab5..d6c812f 100644 --- a/server/pool.go +++ b/server/pool.go @@ -20,8 +20,7 @@ type Pool struct { // StartPool creates a new pool of servers specified by the provided config and // runs them. func StartPool(cfgs []config.ServerConfig, tkr *tracker.Tracker) (*Pool, error) { - var servers []Server - var wg sync.WaitGroup + var toReturn Pool for _, cfg := range cfgs { srv, err := New(&cfg, tkr) @@ -29,19 +28,16 @@ func StartPool(cfgs []config.ServerConfig, tkr *tracker.Tracker) (*Pool, error) return nil, err } - wg.Add(1) + toReturn.wg.Add(1) go func(srv Server) { - defer wg.Done() + defer toReturn.wg.Done() srv.Start() }(srv) - servers = append(servers, srv) + toReturn.servers = append(toReturn.servers, srv) } - return &Pool{ - servers: servers, - wg: wg, - }, nil + return &toReturn, nil } // Stop safely shuts down a pool of servers. diff --git a/server/store/store.go b/server/store/store.go index d418875..9215af4 100644 --- a/server/store/store.go +++ b/server/store/store.go @@ -48,6 +48,7 @@ func constructor(srvcfg *config.ServerConfig, tkr *tracker.Tracker) (server.Serv theStore = &Store{ cfg: cfg, tkr: tkr, + shutdown: make(chan struct{}), ClientStore: cs, PeerStore: ps, IPStore: ips,