From 2b6d776be5c84116e13c640aa2809ad27c222e5f Mon Sep 17 00:00:00 2001 From: Jack Chistyakov Date: Thu, 12 Feb 2026 12:59:06 -0700 Subject: [PATCH] Fix fragmentation bug --- internal/socket/duplex.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/internal/socket/duplex.go b/internal/socket/duplex.go index efaf2cf..1674d61 100644 --- a/internal/socket/duplex.go +++ b/internal/socket/duplex.go @@ -1092,10 +1092,20 @@ func (dc *DuplexConnection) sendPayload( } dc.doSplit(d, m, func(index int, result fragmentation.SplitResult) { flag := result.Flag + isLastFragment := !result.Flag.Check(core.FlagFollow) + if index == 0 { flag |= frameFlag + // Remove (C)omplete flag, unless this is the last fragment. + if !isLastFragment { + flag &^= core.FlagComplete + } } else { flag |= core.FlagNext + // Set (C)omplete flag, if the original frame had it and this is the last fragment. + if isLastFragment && frameFlag.Check(core.FlagComplete) { + flag |= core.FlagComplete + } } // lazy release at last frame