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...)