diff options
| -rw-r--r-- | main.go | 1 | ||||
| -rw-r--r-- | shutdown.go | 28 |
2 files changed, 29 insertions, 0 deletions
@@ -34,6 +34,7 @@ func main() { ip := os.Getenv("WEB2IRC_HTTP_IP") port := os.Getenv("WEB2IRC_HTTP_PORT") + go Shutdown() log.Println("Listening on " + ip + ":" + port) http.ListenAndServe(ip+":"+port, nil) } diff --git a/shutdown.go b/shutdown.go new file mode 100644 index 0000000..7147bdc --- /dev/null +++ b/shutdown.go @@ -0,0 +1,28 @@ +package main + +import ( + "log" + "os" + "os/signal" + "syscall" + "time" +) + +var ( + Signals = []os.Signal{syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT} +) + +func Shutdown() { + ch := make(chan os.Signal, 0) + signal.Notify(ch, Signals...) + + s := <-ch + if s != nil { + log.Printf("Received signal '%s'.", s) + con.Quit() + log.Print("Terminating in 5 seconds.") + time.Sleep(time.Second * 5) + log.Printf("Terminating because of signal '%s'", s) + os.Exit(0) + } +} |
