File tree 1 file changed +7
-3
lines changed
1 file changed +7
-3
lines changed Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import (
12
12
"os"
13
13
"strings"
14
14
"sync"
15
+ "sync/atomic"
15
16
"syscall"
16
17
"time"
17
18
@@ -215,9 +216,12 @@ func (wl *wrappedListener) Accept() (net.Conn, error) {
215
216
}
216
217
}
217
218
219
+ closed := int32 (0 )
220
+
218
221
c = wrappedConn {
219
222
Conn : c ,
220
223
server : wl .server ,
224
+ closed : & closed ,
221
225
}
222
226
223
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
}
245
250
246
251
func (w wrappedConn ) Close () error {
247
- err := w .Conn .Close ()
248
- if err == nil {
252
+ if atomic .CompareAndSwapInt32 (w .closed , 0 , 1 ) {
249
253
w .server .wg .Done ()
250
254
}
251
- return err
255
+ return w . Conn . Close ()
252
256
}
You can’t perform that action at this time.
0 commit comments