aboutsummaryrefslogtreecommitdiff
path: root/core/sigtrap.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/sigtrap.go')
-rw-r--r--core/sigtrap.go93
1 files changed, 0 insertions, 93 deletions
diff --git a/core/sigtrap.go b/core/sigtrap.go
deleted file mode 100644
index f40dd971a..000000000
--- a/core/sigtrap.go
+++ /dev/null
@@ -1,93 +0,0 @@
-package core
-
-import (
- "log"
- "os"
- "os/signal"
- "sync"
-
- "github.com/miekg/coredns/server"
-)
-
-// TrapSignals create signal handlers for all applicable signals for this
-// system. If your Go program uses signals, this is a rather invasive
-// function; best to implement them yourself in that case. Signals are not
-// required for the caddy package to function properly, but this is a
-// convenient way to allow the user to control this package of your program.
-func TrapSignals() {
- trapSignalsCrossPlatform()
- trapSignalsPosix()
-}
-
-// trapSignalsCrossPlatform captures SIGINT, which triggers forceful
-// shutdown that executes shutdown callbacks first. A second interrupt
-// signal will exit the process immediately.
-func trapSignalsCrossPlatform() {
- go func() {
- shutdown := make(chan os.Signal, 1)
- signal.Notify(shutdown, os.Interrupt)
-
- for i := 0; true; i++ {
- <-shutdown
-
- if i > 0 {
- log.Println("[INFO] SIGINT: Force quit")
- if PidFile != "" {
- os.Remove(PidFile)
- }
- os.Exit(1)
- }
-
- log.Println("[INFO] SIGINT: Shutting down")
-
- if PidFile != "" {
- os.Remove(PidFile)
- }
-
- go os.Exit(executeShutdownCallbacks("SIGINT"))
- }
- }()
-}
-
-// executeShutdownCallbacks executes the shutdown callbacks as initiated
-// by signame. It logs any errors and returns the recommended exit status.
-// This function is idempotent; subsequent invocations always return 0.
-func executeShutdownCallbacks(signame string) (exitCode int) {
- shutdownCallbacksOnce.Do(func() {
- serversMu.Lock()
- errs := server.ShutdownCallbacks(servers)
- serversMu.Unlock()
-
- if len(errs) > 0 {
- for _, err := range errs {
- log.Printf("[ERROR] %s shutdown: %v", signame, err)
- }
- exitCode = 1
- }
- })
- return
-}
-
-// executeStartupCallbacks executes the startup callbacks as initiated
-// by signame. This is used when on restart when the child failed to start and
-// all middleware executed their shutdown functions
-func executeStartupCallbacks(signame string) (exitCode int) {
- startupCallbacksOnce.Do(func() {
- serversMu.Lock()
- errs := server.StartupCallbacks(servers)
- serversMu.Unlock()
-
- if len(errs) > 0 {
- for _, err := range errs {
- log.Printf("[ERROR] %s shutdown: %v", signame, err)
- }
- exitCode = 1
- }
- })
- return
-}
-
-var (
- shutdownCallbacksOnce sync.Once
- startupCallbacksOnce sync.Once
-)