]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: use atomicBool for inShutdown
authorRobert Kuska <rkuska@gmail.com>
Fri, 13 Mar 2020 18:21:19 +0000 (19:21 +0100)
committerIan Lance Taylor <iant@golang.org>
Sun, 15 Mar 2020 00:17:52 +0000 (00:17 +0000)
This removes the TODO leftover by replacing the original int32 for
atomicBool that mimicks atomic operations for boolean.

Change-Id: I1b2cac0c9573c890c7315e9906ce6bfccee3d770
Reviewed-on: https://go-review.googlesource.com/c/go/+/223357
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/net/http/server.go

index 58aff08424db84ce73a44a3dc536403830c7779e..54d28d03a03569875e1b800c7e06612e937e2385 100644 (file)
@@ -2577,8 +2577,9 @@ type Server struct {
        // value.
        ConnContext func(ctx context.Context, c net.Conn) context.Context
 
+       inShutdown atomicBool // true when when server is in shutdown
+
        disableKeepAlives int32     // accessed atomically.
-       inShutdown        int32     // accessed atomically (non-zero means we're in Shutdown)
        nextProtoOnce     sync.Once // guards setupHTTP2_* init
        nextProtoErr      error     // result of http2.ConfigureServer if used
 
@@ -2624,7 +2625,7 @@ func (s *Server) closeDoneChanLocked() {
 // Close returns any error returned from closing the Server's
 // underlying Listener(s).
 func (srv *Server) Close() error {
-       atomic.StoreInt32(&srv.inShutdown, 1)
+       srv.inShutdown.setTrue()
        srv.mu.Lock()
        defer srv.mu.Unlock()
        srv.closeDoneChanLocked()
@@ -2666,7 +2667,7 @@ var shutdownPollInterval = 500 * time.Millisecond
 // Once Shutdown has been called on a server, it may not be reused;
 // future calls to methods such as Serve will return ErrServerClosed.
 func (srv *Server) Shutdown(ctx context.Context) error {
-       atomic.StoreInt32(&srv.inShutdown, 1)
+       srv.inShutdown.setTrue()
 
        srv.mu.Lock()
        lnerr := srv.closeListenersLocked()
@@ -3032,9 +3033,7 @@ func (s *Server) doKeepAlives() bool {
 }
 
 func (s *Server) shuttingDown() bool {
-       // TODO: replace inShutdown with the existing atomicBool type;
-       // see https://github.com/golang/go/issues/20239#issuecomment-381434582
-       return atomic.LoadInt32(&s.inShutdown) != 0
+       return s.inShutdown.isSet()
 }
 
 // SetKeepAlivesEnabled controls whether HTTP keep-alives are enabled.