From 0da09c5dddbe190b1efbc85f8a37ea9231cdc61b Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Sun, 27 Nov 2022 11:42:43 +0800 Subject: [PATCH] fix: quicStreamPacketConn's close --- transport/tuic/client.go | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/transport/tuic/client.go b/transport/tuic/client.go index ca0e78a1..f30932f7 100644 --- a/transport/tuic/client.go +++ b/transport/tuic/client.go @@ -401,7 +401,6 @@ func (t *Client) ListenPacketContext(ctx context.Context, metadata *C.Metadata) } pipe1, pipe2 := net.Pipe() - inputCh := make(chan udpData) var connId uint32 for { connId = rand.Uint32() @@ -416,24 +415,16 @@ func (t *Client) ListenPacketContext(ctx context.Context, metadata *C.Metadata) lAddr: quicConn.LocalAddr(), client: t, inputConn: N.NewBufferedConn(pipe2), - inputCh: inputCh, } return pc, nil } -type udpData struct { - data []byte - addr net.Addr - err error -} - type quicStreamPacketConn struct { connId uint32 quicConn quic.Connection lAddr net.Addr client *Client inputConn *N.BufferedConn - inputCh chan udpData closeOnce sync.Once closeErr error @@ -455,6 +446,8 @@ func (q *quicStreamPacketConn) close() (err error) { defer func() { q.client.deferQuicConn(q.quicConn, err) }() + q.client.udpInputMap.Delete(q.connId) + _ = q.inputConn.Close() buf := &bytes.Buffer{} err = NewDissociate(q.connId).WriteTo(buf) if err != nil {