From 5ec4045e248c19cd02ec76d52c21015acc5e2831 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 9 Dec 2025 06:02:15 +0900 Subject: [PATCH] internal/pipewire: do not clobber error parsing SCMs The error is handled later, clobbering it here breaks error handling when SCMs are present. Signed-off-by: Ophestra --- internal/pipewire/pipewire.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/pipewire/pipewire.go b/internal/pipewire/pipewire.go index 8d7e751..3025016 100644 --- a/internal/pipewire/pipewire.go +++ b/internal/pipewire/pipewire.go @@ -271,16 +271,20 @@ func (ctx *Context) recvmsg(remaining []byte) (payload []byte, err error) { n, oobn, recvflags, err = ctx.conn.Recvmsg(ctx.iovecBuf[len(remaining):], ctx.oobBuf[:], recvmsgFlags) if oob := ctx.oobBuf[:oobn]; len(oob) > 0 { + var oobErr error + var scm []syscall.SocketControlMessage - if scm, err = syscall.ParseSocketControlMessage(oob); err != nil { + if scm, oobErr = syscall.ParseSocketControlMessage(oob); oobErr != nil { ctx.closeReceivedFiles() + err = oobErr return } var fds []int for i := range scm { - if fds, err = syscall.ParseUnixRights(&scm[i]); err != nil { + if fds, oobErr = syscall.ParseUnixRights(&scm[i]); oobErr != nil { ctx.closeReceivedFiles() + err = oobErr return } ctx.receivedFiles = append(ctx.receivedFiles, fds...)