Fix data races found by race detector.

This commit is contained in:
Eugene Bujak 2019-02-21 19:07:12 +03:00
parent 12f8590228
commit 8e993cd788
2 changed files with 4 additions and 0 deletions

2
app.go
View file

@ -183,7 +183,9 @@ func run(args options) {
log.Fatal(data.WarningValidation) log.Fatal(data.WarningValidation)
os.Exit(1) os.Exit(1)
} }
config.Lock()
config.TLS = data // update warnings config.TLS = data // update warnings
config.Unlock()
// prepare certs for HTTPS server // prepare certs for HTTPS server
// important -- they have to be copies, otherwise changing the contents in config.TLS will break encryption for in-flight requests // important -- they have to be copies, otherwise changing the contents in config.TLS will break encryption for in-flight requests

View file

@ -1105,10 +1105,12 @@ func handleTLSConfigure(w http.ResponseWriter, r *http.Request) {
if restartHTTPS { if restartHTTPS {
go func() { go func() {
time.Sleep(time.Second) // TODO: could not find a way to reliably know that data was fully sent to client by https server, so we wait a bit to let response through before closing the server time.Sleep(time.Second) // TODO: could not find a way to reliably know that data was fully sent to client by https server, so we wait a bit to let response through before closing the server
httpsServer.cond.L.Lock()
httpsServer.cond.Broadcast() httpsServer.cond.Broadcast()
if httpsServer.server != nil { if httpsServer.server != nil {
httpsServer.server.Shutdown(context.TODO()) httpsServer.server.Shutdown(context.TODO())
} }
httpsServer.cond.L.Unlock()
}() }()
} }
} }