We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent d32b65a commit c512bfdCopy full SHA for c512bfd
1 file changed
modules/graceful/server.go
@@ -12,6 +12,7 @@ import (
12
"os"
13
"strings"
14
"sync"
15
+ "sync/atomic"
16
"syscall"
17
"time"
18
@@ -215,9 +216,12 @@ func (wl *wrappedListener) Accept() (net.Conn, error) {
215
216
}
217
218
219
+ closed := int32(0)
220
+
221
c = wrappedConn{
222
Conn: c,
223
server: wl.server,
224
+ closed: &closed,
225
226
227
wl.server.wg.Add(1)
@@ -241,12 +245,12 @@ func (wl *wrappedListener) File() (*os.File, error) {
241
245
type wrappedConn struct {
242
246
net.Conn
243
247
server *Server
248
+ closed *int32
244
249
250
251
func (w wrappedConn) Close() error {
- err := w.Conn.Close()
- if err == nil {
252
+ if atomic.CompareAndSwapInt32(w.closed, 0, 1) {
253
w.server.wg.Done()
254
- return err
255
+ return w.Conn.Close()
256
0 commit comments