1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-17 17:47:03 +00:00

Graceful shutdown on error for httpd, smtpd, pop3d

This commit is contained in:
James Hillyerd
2016-02-29 20:21:49 -08:00
parent 4b4121bb3a
commit 28adcf0437
4 changed files with 59 additions and 23 deletions

View File

@@ -75,8 +75,8 @@ func Start() {
listener, err = net.Listen("tcp", addr)
if err != nil {
log.Errorf("HTTP failed to start TCP4 listener: %v", err)
// TODO More graceful early-shutdown procedure
panic(err)
emergencyShutdown()
return
}
// Listener go routine
@@ -104,7 +104,8 @@ func serve() {
// Nop
default:
log.Errorf("HTTP server failed: %v", err)
// TODO shutdown?
emergencyShutdown()
return
}
}
@@ -141,3 +142,12 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
log.Errorf("HTTP failed to write response: %v", err)
}
}
func emergencyShutdown() {
// Shutdown Inbucket
select {
case _ = <-globalShutdown:
default:
close(globalShutdown)
}
}