From 8d58571d4c9bd6fcbee7c99d30bffcafcb05a97c Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Sat, 12 Sep 2020 21:19:40 +0200 Subject: [PATCH] Create webserver structure in main thread. Avoids a race. --- webserver.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/webserver.go b/webserver.go index 007bd9d..2d312e0 100644 --- a/webserver.go +++ b/webserver.go @@ -41,19 +41,19 @@ func webserver() { http.HandleFunc("/public-groups.json", publicHandler) http.HandleFunc("/stats", statsHandler) - go func() { - server = &http.Server{ - Addr: httpAddr, - ReadHeaderTimeout: 60 * time.Second, - IdleTimeout: 120 * time.Second, + server = &http.Server{ + Addr: httpAddr, + ReadHeaderTimeout: 60 * time.Second, + IdleTimeout: 120 * time.Second, + } + server.RegisterOnShutdown(func() { + groups.mu.Lock() + defer groups.mu.Unlock() + for _, g := range groups.groups { + go g.shutdown("server is shutting down") } - server.RegisterOnShutdown(func() { - groups.mu.Lock() - defer groups.mu.Unlock() - for _, g := range groups.groups { - go g.shutdown("server is shutting down") - } - }) + }) + go func() { var err error err = server.ListenAndServeTLS( filepath.Join(dataDir, "cert.pem"),