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 }