1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
Index: wayland-commons/src/socket.rs
===================================================================
--- wayland-commons.orig/src/socket.rs
+++ wayland-commons/src/socket.rs
@@ -39,6 +39,24 @@ impl MyFrom<&BorrowedFd<'_>> for RawFd {
}
}
+use nix::sys::socket::CmsgIterator;
+trait ResultHack<'a> {
+ fn addresult(self) -> nix::Result<CmsgIterator<'a>>;
+}
+
+impl<'a> ResultHack<'a> for CmsgIterator<'a> {
+ fn addresult(self) -> nix::Result<CmsgIterator<'a>> {
+ return Ok(self);
+ }
+}
+
+impl<'a> ResultHack<'a> for nix::Result<CmsgIterator<'a>> {
+ fn addresult(self) -> nix::Result<CmsgIterator<'a>> {
+ return self;
+ }
+}
+
+
impl Socket {
/// Send a single message to the socket
///
@@ -85,7 +103,7 @@ impl Socket {
)?;
let mut fd_count = 0;
- let received_fds = msg.cmsgs().flat_map(|cmsg| match cmsg {
+ let received_fds = ResultHack::addresult(msg.cmsgs())?.flat_map(|cmsg| match cmsg {
socket::ControlMessageOwned::ScmRights(s) => s,
_ => Vec::new(),
});
|