diff options
Diffstat (limited to 'cmd/zdns')
-rw-r--r-- | cmd/zdns/main.go | 4 | ||||
-rw-r--r-- | cmd/zdns/main_test.go | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/cmd/zdns/main.go b/cmd/zdns/main.go index b0537f9..5af70c6 100644 --- a/cmd/zdns/main.go +++ b/cmd/zdns/main.go @@ -29,6 +29,7 @@ type server interface{ ListenAndServe() error } type cli struct { servers []server + sh *signal.Handler wg sync.WaitGroup } @@ -151,7 +152,7 @@ func newCli(out io.Writer, args []string, configFile string, sig chan os.Signal) // ... and finally the server itself sigHandler.OnClose(dnsSrv) - return &cli{servers: servers}, nil + return &cli{servers: servers, sh: sigHandler}, nil } func (c *cli) run() { @@ -159,6 +160,7 @@ func (c *cli) run() { c.runServer(s) } c.wg.Wait() + c.sh.Close() } func main() { diff --git a/cmd/zdns/main_test.go b/cmd/zdns/main_test.go index da0bfcb..4b4d6ad 100644 --- a/cmd/zdns/main_test.go +++ b/cmd/zdns/main_test.go @@ -3,6 +3,7 @@ package main import ( "io/ioutil" "os" + "syscall" "testing" ) @@ -37,8 +38,11 @@ hijack_mode = "zero" } defer os.Remove(f) - _, err = newCli(ioutil.Discard, []string{"-f", f}, f, make(chan os.Signal, 1)) + sig := make(chan os.Signal, 1) + cli, err := newCli(ioutil.Discard, []string{"-f", f}, f, sig) if err != nil { t.Fatal(err) } + sig <- syscall.SIGTERM + cli.sh.Close() } |