From c3d9bfd3bcec2ac1b48b00458491412cb1154def Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Wed, 28 May 2025 20:45:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E4=B8=80=E4=BA=9B=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- graceful.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/graceful.go b/graceful.go index 585a0cf..32e1c82 100644 --- a/graceful.go +++ b/graceful.go @@ -88,7 +88,7 @@ type endlessServer struct { } /* -NewServer returns an intialized endlessServer Object. Calling Serve on it will +NewServer returns an initialized endlessServer Object. Calling Serve on it will actually "start" the server. */ func NewServer(addr string, handler http.Handler) (srv *endlessServer) { @@ -191,7 +191,7 @@ handler to reply to them. Handler is typically nil, in which case the DefaultServeMux is used. In addition to the stl Serve behaviour each connection is added to a -sync.Waitgroup so that all outstanding connections can be served before shutting +sync.WaitGroup so that all outstanding connections can be served before shutting down the server. */ func (srv *endlessServer) Serve() (err error) { @@ -226,7 +226,9 @@ func (srv *endlessServer) ListenAndServe() (err error) { srv.EndlessListener = newEndlessListener(l, srv) if srv.isChild { - syscall.Kill(syscall.Getppid(), syscall.SIGTERM) + if err = syscall.Kill(syscall.Getppid(), syscall.SIGTERM); nil != err { + return err + } } srv.BeforeBegin(srv.Addr) @@ -277,7 +279,9 @@ func (srv *endlessServer) ListenAndServeTLS(certFile, keyFile string) (err error srv.EndlessListener = tls.NewListener(srv.tlsInnerListener, config) if srv.isChild { - syscall.Kill(syscall.Getppid(), syscall.SIGTERM) + if err = syscall.Kill(syscall.Getppid(), syscall.SIGTERM); nil != err { + return err + } } log.Println(syscall.Getpid(), srv.Addr) @@ -497,8 +501,12 @@ func (el *endlessListener) Accept() (c net.Conn, err error) { return } - tc.SetKeepAlive(true) // see http.tcpKeepAliveListener - tc.SetKeepAlivePeriod(3 * time.Minute) // see http.tcpKeepAliveListener + if err = tc.SetKeepAlive(true); nil != err { + return nil, err + } // see http.tcpKeepAliveListener + if err = tc.SetKeepAlivePeriod(3 * time.Minute); nil != err { + return nil, err + } // see http.tcpKeepAliveListener c = endlessConn{ Conn: tc,