From 9433dbd452aac04c39ca0d6c44c5602af7d5ad24 Mon Sep 17 00:00:00 2001 From: zmaplex Date: Fri, 19 Jul 2024 03:24:08 +0800 Subject: [PATCH] fix: correctly close the listener --- cmd/root.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cmd/root.go b/cmd/root.go index 60f1697..88ee4db 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -4,7 +4,10 @@ import ( "log" "net" "net/http" + "os" + "os/signal" "strings" + "syscall" "github.com/spf13/cobra" v "github.com/spf13/viper" @@ -66,6 +69,20 @@ set WD_CERT.`, lnet = "tcp" } listener, err := net.Listen(lnet, laddr) + + sigc := make(chan os.Signal, 1) + signal.Notify(sigc, os.Interrupt, os.Kill, syscall.SIGTERM) + + go func(c chan os.Signal) { + // Wait for a SIGINT or SIGKILL: + sig := <-c + log.Printf("Caught signal %s: shutting down.", sig) + // Stop listening (and unlink the socket if unix type): + listener.Close() + // And we're done: + os.Exit(0) + }(sigc) + if err != nil { log.Fatal(err) }