diff --git a/server.go b/server.go index aa73093..e8245d2 100644 --- a/server.go +++ b/server.go @@ -100,17 +100,9 @@ func NewHTTPServerWithPort(serveMux *http.ServeMux, port int) *Server { server := &Server{ httpserver: &http.Server{Addr: addr, Handler: serveMux}, - interrupt: make(chan os.Signal, 1), } server.httpserver.SetKeepAlivesEnabled(true) - signal.Notify(server.interrupt, os.Interrupt, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) - go func() { - c := <-server.interrupt - logger.Println("interrupt!!!!!!!! :", c.String()) - server.shutdown() - }() - return server } @@ -153,6 +145,14 @@ func (server *Server) shutdown() { } } +func (server *Server) Stop() { + if server.interrupt != nil { + server.interrupt <- os.Interrupt + } else { + server.shutdown() + } +} + // Start : func (server *Server) Start() error { if server.httpserver != nil { @@ -160,6 +160,15 @@ func (server *Server) Start() error { if r != nil { return r } + server.interrupt = make(chan os.Signal, 1) + signal.Notify(server.interrupt, os.Interrupt, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) + + go func() { + c := <-server.interrupt + logger.Println("interrupt!!!!!!!! :", c.String()) + server.shutdown() + }() + proxyListener := &proxyproto.Listener{ Listener: ln, ReadHeaderTimeout: 10 * time.Second,