From ee02532ab59ec4581e23b8a5e9e4330335c7d1ca Mon Sep 17 00:00:00 2001 From: dyhkwong <50692134+dyhkwong@users.noreply.github.com> Date: Wed, 20 Aug 2025 02:54:47 +0800 Subject: [PATCH] Fix tlsfragment fallback writeAndWaitAck --- common/tlsfragment/conn.go | 3 +++ common/tlsfragment/wait_stub.go | 4 ++++ common/tlsfragment/wait_windows.go | 3 +++ 3 files changed, 10 insertions(+) diff --git a/common/tlsfragment/conn.go b/common/tlsfragment/conn.go index cb29000e..040663bd 100644 --- a/common/tlsfragment/conn.go +++ b/common/tlsfragment/conn.go @@ -109,6 +109,9 @@ func (c *Conn) Write(b []byte) (n int, err error) { if err != nil { return } + if i != len(splitIndexes) { + time.Sleep(c.fallbackDelay) + } } } } diff --git a/common/tlsfragment/wait_stub.go b/common/tlsfragment/wait_stub.go index 7e451a04..6a1cd889 100644 --- a/common/tlsfragment/wait_stub.go +++ b/common/tlsfragment/wait_stub.go @@ -9,6 +9,10 @@ import ( ) func writeAndWaitAck(ctx context.Context, conn *net.TCPConn, payload []byte, fallbackDelay time.Duration) error { + _, err := conn.Write(payload) + if err != nil { + return err + } time.Sleep(fallbackDelay) return nil } diff --git a/common/tlsfragment/wait_windows.go b/common/tlsfragment/wait_windows.go index 118a204d..49706ca5 100644 --- a/common/tlsfragment/wait_windows.go +++ b/common/tlsfragment/wait_windows.go @@ -16,6 +16,9 @@ func writeAndWaitAck(ctx context.Context, conn *net.TCPConn, payload []byte, fal err := winiphlpapi.WriteAndWaitAck(ctx, conn, payload) if err != nil { if errors.Is(err, windows.ERROR_ACCESS_DENIED) { + if _, err := conn.Write(payload); err != nil { + return err + } time.Sleep(fallbackDelay) return nil }