|
@@ -1,6 +1,7 @@
|
|
|
package myth
|
|
|
|
|
|
import (
|
|
|
+ "context"
|
|
|
"fmt"
|
|
|
"log"
|
|
|
"net/http"
|
|
@@ -8,10 +9,7 @@ import (
|
|
|
"os/signal"
|
|
|
"syscall"
|
|
|
"time"
|
|
|
-
|
|
|
//"golang.org/x/net/http2"
|
|
|
-
|
|
|
- _ "net/http/pprof"
|
|
|
)
|
|
|
|
|
|
var (
|
|
@@ -19,6 +17,7 @@ var (
|
|
|
readHeaderTimeout = 30 * time.Second
|
|
|
writeTimeout = 30 * time.Second
|
|
|
idleTimeout = 30 * time.Second
|
|
|
+ shutTimeout = 30 * time.Second
|
|
|
)
|
|
|
|
|
|
func newServe(addr string, router http.Handler) *http.Server {
|
|
@@ -44,7 +43,7 @@ func run(useV2 bool, addr, certFile, keyFile string, router http.Handler) {
|
|
|
errc := make(chan error)
|
|
|
go func() {
|
|
|
c := make(chan os.Signal)
|
|
|
- signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)
|
|
|
+ signal.Notify(c, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM)
|
|
|
errc <- fmt.Errorf("%s", <-c)
|
|
|
}()
|
|
|
|
|
@@ -58,7 +57,12 @@ func run(useV2 bool, addr, certFile, keyFile string, router http.Handler) {
|
|
|
|
|
|
log.Println("Exit HTTP server", "Quit")
|
|
|
}()
|
|
|
- log.Println("Exit", <-errc)
|
|
|
+ e := <-errc
|
|
|
+ log.Println("Recvie", e)
|
|
|
+ ctx, cancel := context.WithTimeout(context.Background(), shutTimeout)
|
|
|
+ defer cancel()
|
|
|
+ s.Shutdown(ctx)
|
|
|
+ log.Println("Exit HTTP server")
|
|
|
}
|
|
|
|
|
|
// ListenAndServe new server and start
|