summaryrefslogtreecommitdiff
path: root/cmd/tunneld
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2020-02-25 23:56:16 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2020-02-25 23:56:16 +0300
commitd6b87d6ad43219bf5b9cdfef50697e1b066dc4ea (patch)
treee0d5bfec440177209031525138a72e739ab457be /cmd/tunneld
parent215b736fdb6b67d4681b8aec0851d1f909be7c8b (diff)
[cmd/tunneld] force exit if server failed to stop
Diffstat (limited to 'cmd/tunneld')
-rw-r--r--cmd/tunneld/main.go22
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")