From b73472ee7e2f0ec85997f02bca1c7c57f8c480dc Mon Sep 17 00:00:00 2001 From: David Zhao Date: Tue, 5 Apr 2022 14:49:32 -0700 Subject: [PATCH] Reduce critical section when writing with TCPMux To avoid one bad connection causing locked processes/cascading failures. --- tcp_packet_conn.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tcp_packet_conn.go b/tcp_packet_conn.go index dc4eaf0..6ed55b0 100644 --- a/tcp_packet_conn.go +++ b/tcp_packet_conn.go @@ -149,9 +149,9 @@ func (t *tcpPacketConn) ReadFrom(b []byte) (n int, raddr net.Addr, err error) { // WriteTo is for active and s-o candidates. func (t *tcpPacketConn) WriteTo(buf []byte, raddr net.Addr) (n int, err error) { t.mu.Lock() - defer t.mu.Unlock() - conn, ok := t.conns[raddr.String()] + t.mu.Unlock() + if !ok { return 0, io.ErrClosedPipe // conn, err := net.DialTCP(tcp, nil, raddr.(*net.TCPAddr))