处理一些异常
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.
|
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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user