From b47f3adbb389db67fd3d487311c074893e0401c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Mon, 11 Jul 2022 20:55:14 +0800 Subject: [PATCH] Improve copy early conn --- outbound/default.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/outbound/default.go b/outbound/default.go index 2be608d0..29a8e48d 100644 --- a/outbound/default.go +++ b/outbound/default.go @@ -81,9 +81,19 @@ func NewPacketConnection(ctx context.Context, this N.Dialer, conn N.PacketConn, } func CopyEarlyConn(ctx context.Context, conn net.Conn, serverConn net.Conn) error { + if cachedReader, isCached := serverConn.(N.CachedReader); isCached { + payload := cachedReader.ReadCached() + if payload != nil && !payload.IsEmpty() { + _, err := serverConn.Write(payload.Bytes()) + if err != nil { + return err + } + return bufio.CopyConn(ctx, conn, serverConn) + } + } _payload := buf.StackNew() payload := common.Dup(_payload) - err := conn.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) + err := conn.SetReadDeadline(time.Now().Add(300 * time.Millisecond)) if err != nil { return err }