mirror of
https://github.com/caddyserver/caddy.git
synced 2024-11-27 10:49:47 +08:00
Controller can register functions to run at shutdown
This commit is contained in:
parent
1146a9b90b
commit
da72a5fbcd
|
@ -28,6 +28,11 @@ func (c *controller) Startup(fn func() error) {
|
|||
c.parser.cfg.Startup = append(c.parser.cfg.Startup, fn)
|
||||
}
|
||||
|
||||
// Shutdown registers a function to execute when the server exits.
|
||||
func (c *controller) Shutdown(fn func() error) {
|
||||
c.parser.cfg.Shutdown = append(c.parser.cfg.Shutdown, fn)
|
||||
}
|
||||
|
||||
// Root returns the server root file path.
|
||||
func (c *controller) Root() string {
|
||||
if c.parser.cfg.Root == "" {
|
||||
|
|
|
@ -71,6 +71,9 @@ type (
|
|||
// Startup registers a function to execute when the server starts.
|
||||
Startup(func() error)
|
||||
|
||||
// Shutdown registers a function to execute when the server exits.
|
||||
Shutdown(func() error)
|
||||
|
||||
// Root returns the file path from which the server is serving.
|
||||
Root() string
|
||||
|
||||
|
|
|
@ -78,7 +78,6 @@ func (s *Server) Serve() error {
|
|||
http2.ConfigureServer(server, nil) // TODO: This may not be necessary after HTTP/2 merged into std lib
|
||||
|
||||
// Execute shutdown commands on exit
|
||||
// TODO: Is graceful net/http shutdown necessary?
|
||||
go func() {
|
||||
interrupt := make(chan os.Signal, 1)
|
||||
signal.Notify(interrupt, os.Interrupt, os.Kill) // TODO: syscall.SIGQUIT? (Ctrl+\, Unix-only)
|
||||
|
@ -103,7 +102,7 @@ func (s *Server) Serve() error {
|
|||
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
defer func() {
|
||||
if rec := recover(); rec != nil {
|
||||
log.Printf("[PANIC] '%s': %s", r.URL.String(), rec)
|
||||
s.Log("[PANIC] '%s': %s", r.URL.String(), rec)
|
||||
}
|
||||
}()
|
||||
s.stack(w, r)
|
||||
|
|
Loading…
Reference in New Issue
Block a user