From d6b87d6ad43219bf5b9cdfef50697e1b066dc4ea Mon Sep 17 00:00:00 2001 From: Mikhail Osipov Date: Tue, 25 Feb 2020 23:56:16 +0300 Subject: [cmd/tunneld] force exit if server failed to stop --- cmd/tunneld/main.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/cmd/tunneld/main.go b/cmd/tunneld/main.go index ef274c8..1ffb99e 100644 --- a/cmd/tunneld/main.go +++ b/cmd/tunneld/main.go @@ -25,6 +25,20 @@ func initLog() { log.SetFlags(logFlags) } +func sighandler(c chan os.Signal, s *server.Server) { + var try bool + + for sig := range c { + if try { + log.Fatal("force exit") + } + + log.Printf("catch signal: %s", sig) + try = true + s.Stop() + } +} + func main() { flag.Parse() initLog() @@ -38,13 +52,7 @@ func main() { log.Fatal(err) } - go func() { - sig := <-c - - log.Printf("killed by signal: %s", sig) - - s.Stop() - }() + go sighandler(c, s) log.Print("ready") -- cgit v1.2.3-70-g09d2