Abstract shutdown checking into seperate function (#716)

This commit is contained in:
Tom Thorogood 2018-07-28 22:17:30 +09:30 committed by Miek Gieben
parent 1e845a5b06
commit b559d43c31
1 changed files with 9 additions and 8 deletions

View File

@ -315,6 +315,13 @@ type Server struct {
started bool started bool
} }
func (srv *Server) isStarted() bool {
srv.lock.RLock()
started := srv.started
srv.lock.RUnlock()
return started
}
func (srv *Server) worker(w *response) { func (srv *Server) worker(w *response) {
srv.serve(w) srv.serve(w)
@ -512,12 +519,9 @@ func (srv *Server) serveTCP(l net.Listener) error {
for { for {
rw, err := l.Accept() rw, err := l.Accept()
srv.lock.RLock() if !srv.isStarted() {
if !srv.started {
srv.lock.RUnlock()
return nil return nil
} }
srv.lock.RUnlock()
if err != nil { if err != nil {
if neterr, ok := err.(net.Error); ok && neterr.Temporary() { if neterr, ok := err.(net.Error); ok && neterr.Temporary() {
continue continue
@ -545,12 +549,9 @@ func (srv *Server) serveUDP(l *net.UDPConn) error {
// deadline is not used here // deadline is not used here
for { for {
m, s, err := reader.ReadUDP(l, rtimeout) m, s, err := reader.ReadUDP(l, rtimeout)
srv.lock.RLock() if !srv.isStarted() {
if !srv.started {
srv.lock.RUnlock()
return nil return nil
} }
srv.lock.RUnlock()
if err != nil { if err != nil {
if netErr, ok := err.(net.Error); ok && netErr.Temporary() { if netErr, ok := err.(net.Error); ok && netErr.Temporary() {
continue continue