diff --git a/src/sys/unix/selector/epoll.rs b/src/sys/unix/selector/epoll.rs index 1256663d..9f292c5b 100644 --- a/src/sys/unix/selector/epoll.rs +++ b/src/sys/unix/selector/epoll.rs @@ -89,15 +89,11 @@ impl Selector { let timeout = timeout .map(|to| { let to_ms = to.as_millis(); - // as_millis() truncates, so round up to 1 ms as the documentation says can happen. - // This avoids turning submillisecond timeouts into immediate returns unless the - // caller explicitly requests that by specifying a zero timeout. - let to_ms = to_ms - + if to_ms == 0 && to.subsec_nanos() != 0 { - 1 - } else { - 0 - }; + // `Duration::as_millis` truncates, so round up to 1 ms. This + // avoids turning sub-millisecond timeouts into a zero timeout, + // unless the caller explicitly requests that by specifying a + // zero timeout. + let to_ms = to_ms + u128::from(to_ms == 0 && to.subsec_nanos() != 0); cmp::min(MAX_SAFE_TIMEOUT, to_ms) as libc::c_int }) .unwrap_or(-1); diff --git a/src/sys/unix/tcp.rs b/src/sys/unix/tcp.rs index c4d7e946..30790ef5 100644 --- a/src/sys/unix/tcp.rs +++ b/src/sys/unix/tcp.rs @@ -40,7 +40,7 @@ pub(crate) fn listen(socket: &net::TcpListener, backlog: u32) -> io::Result<()> } pub(crate) fn set_reuseaddr(socket: &net::TcpListener, reuseaddr: bool) -> io::Result<()> { - let val: libc::c_int = if reuseaddr { 1 } else { 0 }; + let val: libc::c_int = i32::from(reuseaddr); syscall!(setsockopt( socket.as_raw_fd(), libc::SOL_SOCKET, diff --git a/tests/unix_datagram.rs b/tests/unix_datagram.rs index 7c4b01f1..1b05f515 100644 --- a/tests/unix_datagram.rs +++ b/tests/unix_datagram.rs @@ -32,8 +32,8 @@ fn unix_datagram_smoke_unconnected() { let path1 = temp_file("unix_datagram_smoke_unconnected1"); let path2 = temp_file("unix_datagram_smoke_unconnected2"); - let datagram1 = UnixDatagram::bind(&path1).unwrap(); - let datagram2 = UnixDatagram::bind(&path2).unwrap(); + let datagram1 = UnixDatagram::bind(path1).unwrap(); + let datagram2 = UnixDatagram::bind(path2).unwrap(); smoke_test_unconnected(datagram1, datagram2); } @@ -57,8 +57,8 @@ fn unix_datagram_smoke_unconnected_from_std() { let path1 = temp_file("unix_datagram_smoke_unconnected_from_std1"); let path2 = temp_file("unix_datagram_smoke_unconnected_from_std2"); - let datagram1 = net::UnixDatagram::bind(&path1).unwrap(); - let datagram2 = net::UnixDatagram::bind(&path2).unwrap(); + let datagram1 = net::UnixDatagram::bind(path1).unwrap(); + let datagram2 = net::UnixDatagram::bind(path2).unwrap(); datagram1.set_nonblocking(true).unwrap(); datagram2.set_nonblocking(true).unwrap(); @@ -94,9 +94,9 @@ fn unix_datagram_connect() { let path1 = temp_file("unix_datagram_connect1"); let path2 = temp_file("unix_datagram_connect2"); - let datagram1 = UnixDatagram::bind(&path1).unwrap(); + let datagram1 = UnixDatagram::bind(path1).unwrap(); let datagram1_local = datagram1.local_addr().unwrap(); - let datagram2 = UnixDatagram::bind(&path2).unwrap(); + let datagram2 = UnixDatagram::bind(path2).unwrap(); let datagram2_local = datagram2.local_addr().unwrap(); datagram1 @@ -171,7 +171,7 @@ fn unix_datagram_shutdown() { let path1 = temp_file("unix_datagram_shutdown1"); let path2 = temp_file("unix_datagram_shutdown2"); - let mut datagram1 = UnixDatagram::bind(&path1).unwrap(); + let mut datagram1 = UnixDatagram::bind(path1).unwrap(); let mut datagram2 = UnixDatagram::bind(&path2).unwrap(); poll.registry() @@ -246,7 +246,7 @@ fn unix_datagram_reregister() { .register(&mut datagram1, TOKEN_1, Interest::READABLE) .unwrap(); - let datagram2 = UnixDatagram::bind(&path2).unwrap(); + let datagram2 = UnixDatagram::bind(path2).unwrap(); datagram2.connect(&path1).unwrap(); poll.registry() .reregister(&mut datagram1, TOKEN_1, Interest::WRITABLE) @@ -269,7 +269,7 @@ fn unix_datagram_deregister() { .register(&mut datagram1, TOKEN_1, Interest::WRITABLE) .unwrap(); - let datagram2 = UnixDatagram::bind(&path2).unwrap(); + let datagram2 = UnixDatagram::bind(path2).unwrap(); datagram2.connect(&path1).unwrap(); poll.registry().deregister(&mut datagram1).unwrap(); expect_no_events(&mut poll, &mut events);