diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-12-09 06:02:15 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-12-09 06:02:15 +0900 |
| commit | 5ec4045e248c19cd02ec76d52c21015acc5e2831 (patch) | |
| tree | 768cc0ec2caec2ab6c88244603527f9e5abe6494 /internal/pipewire | |
| parent | be2075f1693e4c4eff4975537a6c490467a61d79 (diff) | |
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 <cat@gensokyo.uk>
Diffstat (limited to 'internal/pipewire')
| -rw-r--r-- | internal/pipewire/pipewire.go | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/internal/pipewire/pipewire.go b/internal/pipewire/pipewire.go index 8d7e751d..3025016b 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...) |
