diff options
| -rw-r--r-- | cmd/haminer/main.go | 21 | ||||
| -rw-r--r-- | haminer.go | 15 |
2 files changed, 17 insertions, 19 deletions
diff --git a/cmd/haminer/main.go b/cmd/haminer/main.go index e2c98fb..a341d30 100644 --- a/cmd/haminer/main.go +++ b/cmd/haminer/main.go @@ -8,6 +8,9 @@ import ( "flag" "fmt" "log" + "os" + "os/signal" + "syscall" "git.sr.ht/~shulhan/haminer" ) @@ -19,6 +22,8 @@ const ( func main() { var ( + chSignal = make(chan os.Signal, 1) + cfg *haminer.Config err error flagConfig string @@ -41,8 +46,16 @@ func main() { h := haminer.NewHaminer(cfg) - err = h.Start() - if err != nil { - log.Fatal(err) - } + signal.Notify(chSignal, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) + + go func() { + err = h.Start() + if err != nil { + log.Fatal(err) + } + }() + + <-chSignal + h.Stop() + signal.Stop(chSignal) } @@ -8,9 +8,6 @@ import ( "fmt" "log" "net" - "os" - "os/signal" - "syscall" "time" ) @@ -18,7 +15,6 @@ import ( type Haminer struct { cfg *Config udpConn *net.UDPConn - chSignal chan os.Signal chHttpLog chan *HttpLog ff []Forwarder isRunning bool @@ -33,14 +29,10 @@ func NewHaminer(cfg *Config) (h *Haminer) { h = &Haminer{ cfg: cfg, - chSignal: make(chan os.Signal, 1), chHttpLog: make(chan *HttpLog, 30), ff: make([]Forwarder, 0), } - signal.Notify(h.chSignal, syscall.SIGHUP, syscall.SIGINT, - syscall.SIGTERM, syscall.SIGQUIT) - h.createForwarder() return @@ -75,11 +67,6 @@ func (h *Haminer) Start() (err error) { go h.consume() go h.produce() - - <-h.chSignal - - h.Stop() - return } @@ -171,8 +158,6 @@ func (h *Haminer) produce() { func (h *Haminer) Stop() { h.isRunning = false - signal.Stop(h.chSignal) - if h.udpConn != nil { err := h.udpConn.Close() if err != nil { |
