aboutsummaryrefslogtreecommitdiff
path: root/src/sys/unix/uds/datagram.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/sys/unix/uds/datagram.rs')
-rw-r--r--src/sys/unix/uds/datagram.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/sys/unix/uds/datagram.rs b/src/sys/unix/uds/datagram.rs
index d3e5314..a5ada72 100644
--- a/src/sys/unix/uds/datagram.rs
+++ b/src/sys/unix/uds/datagram.rs
@@ -7,18 +7,18 @@ use std::os::unix::net;
use std::path::Path;
pub(crate) fn bind(path: &Path) -> io::Result<net::UnixDatagram> {
- let fd = new_socket(libc::AF_UNIX, libc::SOCK_DGRAM)?;
- // Ensure the fd is closed.
- let socket = unsafe { net::UnixDatagram::from_raw_fd(fd) };
let (sockaddr, socklen) = socket_addr(path)?;
let sockaddr = &sockaddr as *const libc::sockaddr_un as *const _;
- syscall!(bind(fd, sockaddr, socklen))?;
+
+ let socket = unbound()?;
+ syscall!(bind(socket.as_raw_fd(), sockaddr, socklen))?;
+
Ok(socket)
}
pub(crate) fn unbound() -> io::Result<net::UnixDatagram> {
- new_socket(libc::AF_UNIX, libc::SOCK_DGRAM)
- .map(|socket| unsafe { net::UnixDatagram::from_raw_fd(socket) })
+ let fd = new_socket(libc::AF_UNIX, libc::SOCK_DGRAM)?;
+ Ok(unsafe { net::UnixDatagram::from_raw_fd(fd) })
}
pub(crate) fn pair() -> io::Result<(net::UnixDatagram, net::UnixDatagram)> {