aboutsummaryrefslogtreecommitdiff
path: root/src/sys/unix
diff options
context:
space:
mode:
authorChih-Hung Hsieh <chh@google.com>2020-10-26 17:32:58 -0700
committerChih-Hung Hsieh <chh@google.com>2020-10-26 17:32:58 -0700
commita7d72307ee249b629d6de0f312ab873abc881287 (patch)
tree6fe08166e7445c7d658490296d3912b5edf9e94c /src/sys/unix
parente0c0907593ac36ac6446144ebc51cc9880affa87 (diff)
downloadmio-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.rs18
-rw-r--r--src/sys/unix/uds/socketaddr.rs2
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