File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -6,6 +6,9 @@ package certstream
66
77import (
88 "log"
9+ "os"
10+ "os/signal"
11+ "syscall"
912
1013 "github.com/d-Rickyy-b/certstream-server-go/internal/certificatetransparency"
1114 "github.com/d-Rickyy-b/certstream-server-go/internal/config"
@@ -66,6 +69,11 @@ func (cs *Certstream) setupMetrics(webserver *web.WebServer) {
6669func (cs * Certstream ) Start () {
6770 log .Printf ("Starting certstream-server-go v%s\n " , config .Version )
6871
72+ // handle signals in a separate goroutine
73+ signals := make (chan os.Signal , 1 )
74+ signal .Notify (signals , syscall .SIGINT , syscall .SIGTERM )
75+ go signalHandler (signals , cs .Stop )
76+
6977 // If there is no watcher initialized, create a new one
7078 if cs .watcher == nil {
7179 cs .watcher = & certificatetransparency.Watcher {}
@@ -99,3 +107,13 @@ func (cs *Certstream) Stop() {
99107 cs .metricsServer .Stop ()
100108 }
101109}
110+
111+ // signalHandler listens for signals in order to gracefully shut down the server.
112+ // Executes the callback function when a signal is received.
113+ func signalHandler (signals chan os.Signal , callback func ()) {
114+ log .Println ("Listening for signals..." )
115+ sig := <- signals
116+ log .Printf ("Received signal %v. Shutting down...\n " , sig )
117+ callback ()
118+ os .Exit (0 )
119+ }
You can’t perform that action at this time.
0 commit comments