From 4d12ed491cd23c99a56d61961640b6f2c40b9794 Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Mon, 10 Apr 2023 12:22:12 +0800 Subject: [PATCH] fix: tuic pool client should only cache the system's UDPConn --- transport/tuic/pool_client.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/transport/tuic/pool_client.go b/transport/tuic/pool_client.go index fe06c2f3..04ada7c0 100644 --- a/transport/tuic/pool_client.go +++ b/transport/tuic/pool_client.go @@ -67,11 +67,14 @@ func (t *PoolClient) dial(ctx context.Context, dialer C.Dialer, dialFn DialFunc) return nil, nil, err } - dr.pc, dr.addr, dr.err = pc, addr, err + if _, ok := pc.(*net.UDPConn); ok { // only cache the system's UDPConn + dr.pc, dr.addr, dr.err = pc, addr, err + + t.dialResultMutex.Lock() + t.dialResultMap[dialer] = dr + t.dialResultMutex.Unlock() + } - t.dialResultMutex.Lock() - t.dialResultMap[dialer] = dr - t.dialResultMutex.Unlock() return pc, addr, err }