Skip to content

Commit 8d180f7

Browse files
fix(tcp): race condition
1 parent 4cf6c22 commit 8d180f7

File tree

1 file changed

+8
-3
lines changed
  • backend/pkg/transport/network/tcp

1 file changed

+8
-3
lines changed

backend/pkg/transport/network/tcp/conn.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,25 @@ func WithErrChan(conn net.Conn) (net.Conn, <-chan error) {
2121
func (conn *connWithErr) Read(b []byte) (n int, err error) {
2222
n, err = conn.Conn.Read(b)
2323
if err != nil && !errors.Is(err, net.ErrClosed) {
24-
conn.errors <- err
24+
select {
25+
case conn.errors <- err:
26+
default:
27+
}
2528
}
2629
return
2730
}
2831

2932
func (conn *connWithErr) Write(b []byte) (n int, err error) {
3033
n, err = conn.Conn.Write(b)
3134
if err != nil && !errors.Is(err, net.ErrClosed) {
32-
conn.errors <- err
35+
select {
36+
case conn.errors <- err:
37+
default:
38+
}
3339
}
3440
return
3541
}
3642

3743
func (conn *connWithErr) Close() error {
38-
close(conn.errors)
3944
return conn.Conn.Close()
4045
}

0 commit comments

Comments
 (0)