Fix file descriptor IPC

This commit is contained in:
topjohnwu 2025-02-03 18:21:03 +08:00
parent 3981c9665e
commit bb02ea3a20

View File

@ -146,7 +146,7 @@ pub trait UnixSocketExt {
impl UnixSocketExt for UnixStream {
fn send_fds(&mut self, fds: &[RawFd]) -> io::Result<()> {
match fds.len() {
0 => self.write_encodable(&-1)?,
0 => self.write_pod(&0)?,
len => {
// 4k buffer is reasonable enough
let mut buf = [0u8; 4096];
@ -166,8 +166,16 @@ impl UnixSocketExt for UnixStream {
let mut fd_count = 0;
self.peek(bytes_of_mut(&mut fd_count))?;
if fd_count < 1 {
// Actually consume the data
self.read_pod(&mut fd_count)?;
return Ok(None);
}
if fd_count > 1 {
warn!(
"Received unexpected number of fds: expected=1 actual={}",
fd_count
);
}
// 4k buffer is reasonable enough
let mut buf = [0u8; 4096];