Skip to content

Commit

Permalink
Fix build on musl targets.
Browse files Browse the repository at this point in the history
  • Loading branch information
kinetiknz committed Sep 27, 2017
1 parent b35564f commit d9cb637
Showing 1 changed file with 32 additions and 24 deletions.
56 changes: 32 additions & 24 deletions src/sys/socket/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -418,10 +418,12 @@ impl<'a> ControlMessage<'a> {
unsafe fn encode_into<'b>(&self, buf: &mut &'b mut [u8]) {
match *self {
ControlMessage::ScmRights(fds) => {
let cmsg = cmsghdr {
cmsg_len: self.len() as _,
cmsg_level: libc::SOL_SOCKET,
cmsg_type: libc::SCM_RIGHTS,
let cmsg = {
let mut cmsg: cmsghdr = mem::uninitialized();
cmsg.cmsg_len = self.len() as _;
cmsg.cmsg_level = libc::SOL_SOCKET;
cmsg.cmsg_type = libc::SCM_RIGHTS;
cmsg
};
copy_bytes(&cmsg, buf);

Expand All @@ -436,10 +438,12 @@ impl<'a> ControlMessage<'a> {
copy_bytes(fds, buf);
},
ControlMessage::ScmTimestamp(t) => {
let cmsg = cmsghdr {
cmsg_len: self.len() as _,
cmsg_level: libc::SOL_SOCKET,
cmsg_type: libc::SCM_TIMESTAMP,
let cmsg = {
let mut cmsg: cmsghdr = mem::uninitialized();
cmsg.cmsg_len = self.len() as _;
cmsg.cmsg_level = libc::SOL_SOCKET;
cmsg.cmsg_type = libc::SCM_TIMESTAMP;
cmsg
};
copy_bytes(&cmsg, buf);

Expand Down Expand Up @@ -499,14 +503,16 @@ pub fn sendmsg<'a>(fd: RawFd, iov: &[IoVec<&'a [u8]>], cmsgs: &[ControlMessage<'
ptr::null()
};

let mhdr = msghdr {
msg_name: name as *mut _,
msg_namelen: namelen,
msg_iov: iov.as_ptr() as *mut _,
msg_iovlen: iov.len() as _,
msg_control: cmsg_ptr as *mut _,
msg_controllen: capacity as _,
msg_flags: 0,
let mhdr = unsafe {
let mut mhdr: msghdr = mem::uninitialized();
mhdr.msg_name = name as *mut _;
mhdr.msg_namelen = namelen;
mhdr.msg_iov = iov.as_ptr() as *mut _;
mhdr.msg_iovlen = iov.len() as _;
mhdr.msg_control = cmsg_ptr as *mut _;
mhdr.msg_controllen = capacity as _;
mhdr.msg_flags = 0;
mhdr
};
let ret = unsafe { libc::sendmsg(fd, &mhdr, flags.bits()) };

Expand All @@ -522,14 +528,16 @@ pub fn recvmsg<'a, T>(fd: RawFd, iov: &[IoVec<&mut [u8]>], cmsg_buffer: Option<&
Some(cmsg_buffer) => (cmsg_buffer as *mut _, mem::size_of_val(cmsg_buffer)),
None => (0 as *mut _, 0),
};
let mut mhdr = msghdr {
msg_name: &mut address as *mut _ as *mut _,
msg_namelen: mem::size_of::<sockaddr_storage>() as socklen_t,
msg_iov: iov.as_ptr() as *mut _,
msg_iovlen: iov.len() as _,
msg_control: msg_control as *mut _,
msg_controllen: msg_controllen as _,
msg_flags: 0,
let mut mhdr = unsafe {
let mut mhdr: msghdr = mem::uninitialized();
mhdr.msg_name = &mut address as *mut _ as *mut _;
mhdr.msg_namelen = mem::size_of::<sockaddr_storage>() as socklen_t;
mhdr.msg_iov = iov.as_ptr() as *mut _;
mhdr.msg_iovlen = iov.len() as _;
mhdr.msg_control = msg_control as *mut _;
mhdr.msg_controllen = msg_controllen as _;
mhdr.msg_flags = 0;
mhdr
};
let ret = unsafe { libc::recvmsg(fd, &mut mhdr, flags.bits()) };

Expand Down

0 comments on commit d9cb637

Please sign in to comment.