aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/zdns/main.go4
-rw-r--r--cmd/zdns/main_test.go6
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()
}