diff options
author | Chih-Hung Hsieh <chh@google.com> | 2020-10-26 17:32:58 -0700 |
---|---|---|
committer | Chih-Hung Hsieh <chh@google.com> | 2020-10-26 17:32:58 -0700 |
commit | a7d72307ee249b629d6de0f312ab873abc881287 (patch) | |
tree | 6fe08166e7445c7d658490296d3912b5edf9e94c /src/sys/unix | |
parent | e0c0907593ac36ac6446144ebc51cc9880affa87 (diff) | |
download | mio-a7d72307ee249b629d6de0f312ab873abc881287.tar.gz |
Upgrade rust/crates/mio to 0.7.4
Test: make
Change-Id: Id3b629998f13f89246946b2c1f1ba9a4507c2ec0
Diffstat (limited to 'src/sys/unix')
-rw-r--r-- | src/sys/unix/tcp.rs | 18 | ||||
-rw-r--r-- | src/sys/unix/uds/socketaddr.rs | 2 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/sys/unix/tcp.rs b/src/sys/unix/tcp.rs index 9d59632..81b371b 100644 --- a/src/sys/unix/tcp.rs +++ b/src/sys/unix/tcp.rs @@ -1,6 +1,7 @@ use std::io; use std::mem::{size_of, MaybeUninit}; use std::net::{self, SocketAddr}; +use std::time::Duration; use std::os::unix::io::{AsRawFd, FromRawFd}; use crate::sys::unix::net::{new_socket, socket_addr, to_socket_addr}; @@ -54,8 +55,21 @@ pub(crate) fn set_reuseaddr(socket: TcpSocket, reuseaddr: bool) -> io::Result<() libc::SO_REUSEADDR, &val as *const libc::c_int as *const libc::c_void, size_of::<libc::c_int>() as libc::socklen_t, - ))?; - Ok(()) + )).map(|_| ()) +} + +pub(crate) fn set_linger(socket: TcpSocket, dur: Option<Duration>) -> io::Result<()> { + let val: libc::linger = libc::linger { + l_onoff: if dur.is_some() { 1 } else { 0 }, + l_linger: dur.map(|dur| dur.as_secs() as libc::c_int).unwrap_or_default(), + }; + syscall!(setsockopt( + socket, + libc::SOL_SOCKET, + libc::SO_LINGER, + &val as *const libc::linger as *const libc::c_void, + size_of::<libc::linger>() as libc::socklen_t, + )).map(|_| ()) } pub fn accept(listener: &net::TcpListener) -> io::Result<(net::TcpStream, SocketAddr)> { diff --git a/src/sys/unix/uds/socketaddr.rs b/src/sys/unix/uds/socketaddr.rs index 69f311a..ddfa2f0 100644 --- a/src/sys/unix/uds/socketaddr.rs +++ b/src/sys/unix/uds/socketaddr.rs @@ -74,6 +74,8 @@ cfg_os_poll! { /// Documentation reflected in [`SocketAddr`] /// /// [`SocketAddr`]: std::os::unix::net::SocketAddr + // FIXME: The matches macro requires rust 1.42.0 and we still support 1.39.0 + #[allow(clippy::match_like_matches_macro)] pub fn is_unnamed(&self) -> bool { if let AddressKind::Unnamed = self.address() { true |