From cf0e7d8c276aa8a8bff1260635a3007dc79465a1 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 9 Dec 2025 06:28:33 +0900 Subject: [PATCH] internal/pipewire: reset per-roundtrip state once per call This was left in consume when relocating per-roundtrip code out of the per-receive consume method. Signed-off-by: Ophestra --- internal/pipewire/pipewire.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/internal/pipewire/pipewire.go b/internal/pipewire/pipewire.go index 6270429..ed6b0e9 100644 --- a/internal/pipewire/pipewire.go +++ b/internal/pipewire/pipewire.go @@ -63,7 +63,7 @@ type Context struct { generation Long // Pending file descriptors to be sent with the next message. pendingFiles []int - // File count kept track of in [Header]. + // File count already kept track of in [Header]. headerFiles int // Files from the server. This is discarded on every Roundtrip so eventProxy // implementations must make sure to close them to avoid leaking fds. @@ -585,6 +585,9 @@ func (ctx *Context) roundtrip() (err error) { if err = ctx.sendmsg(ctx.buf, ctx.pendingFiles...); err != nil { return } + ctx.buf = ctx.buf[:0] + ctx.pendingFiles = ctx.pendingFiles[:0] + ctx.headerFiles = 0 defer func() { var danglingFiles DanglingFilesError @@ -661,10 +664,6 @@ func (ctx *Context) consume(receiveRemaining []byte) (remaining []byte, err erro return }() - ctx.buf = ctx.buf[:0] - ctx.pendingFiles = ctx.pendingFiles[:0] - ctx.headerFiles = 0 - if remaining, err = ctx.recvmsg(receiveRemaining); err != nil { return }