diff options
Diffstat (limited to 'cmd/tunneld/main.go')
| -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") |
