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 }