处理一些异常
This commit is contained in:
parent
5fdd619dfe
commit
c3d9bfd3bc
20
graceful.go
20
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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user