处理一些异常

This commit is contained in:
白茶清欢 2025-05-28 20:45:23 +08:00
parent 5fdd619dfe
commit c3d9bfd3bc

View File

@ -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. actually "start" the server.
*/ */
func NewServer(addr string, handler http.Handler) (srv *endlessServer) { 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. DefaultServeMux is used.
In addition to the stl Serve behaviour each connection is added to a 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. down the server.
*/ */
func (srv *endlessServer) Serve() (err error) { func (srv *endlessServer) Serve() (err error) {
@ -226,7 +226,9 @@ func (srv *endlessServer) ListenAndServe() (err error) {
srv.EndlessListener = newEndlessListener(l, srv) srv.EndlessListener = newEndlessListener(l, srv)
if srv.isChild { 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) srv.BeforeBegin(srv.Addr)
@ -277,7 +279,9 @@ func (srv *endlessServer) ListenAndServeTLS(certFile, keyFile string) (err error
srv.EndlessListener = tls.NewListener(srv.tlsInnerListener, config) srv.EndlessListener = tls.NewListener(srv.tlsInnerListener, config)
if srv.isChild { 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) log.Println(syscall.Getpid(), srv.Addr)
@ -497,8 +501,12 @@ func (el *endlessListener) Accept() (c net.Conn, err error) {
return return
} }
tc.SetKeepAlive(true) // see http.tcpKeepAliveListener if err = tc.SetKeepAlive(true); nil != err {
tc.SetKeepAlivePeriod(3 * time.Minute) // see http.tcpKeepAliveListener return nil, err
} // see http.tcpKeepAliveListener
if err = tc.SetKeepAlivePeriod(3 * time.Minute); nil != err {
return nil, err
} // see http.tcpKeepAliveListener
c = endlessConn{ c = endlessConn{
Conn: tc, Conn: tc,