diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2020-02-25 23:56:16 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2020-02-25 23:56:16 +0300 |
| commit | d6b87d6ad43219bf5b9cdfef50697e1b066dc4ea (patch) | |
| tree | e0d5bfec440177209031525138a72e739ab457be /cmd/tunneld | |
| parent | 215b736fdb6b67d4681b8aec0851d1f909be7c8b (diff) | |
[cmd/tunneld] force exit if server failed to stop
Diffstat (limited to 'cmd/tunneld')
| -rw-r--r-- | cmd/tunneld/main.go | 22 |
1 files 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") |
