diff --git a/common/client-core/src/client/inbound_messages.rs b/common/client-core/src/client/inbound_messages.rs index bd2c9724c1..4dcd5ae086 100644 --- a/common/client-core/src/client/inbound_messages.rs +++ b/common/client-core/src/client/inbound_messages.rs @@ -199,7 +199,7 @@ impl InputMessage { self.set_max_retransmissions(max_retransmissions); self } - + #[allow(clippy::expect_used)] pub fn serialized_size(&self) -> u64 { bincode::serialized_size(self).expect("failed to get serialized InputMessage size") + LENGHT_ENCODING_PREFIX_SIZE as u64 @@ -226,6 +226,7 @@ impl Encoder for InputMessageCodec { type Error = ClientCoreError; fn encode(&mut self, item: InputMessage, buf: &mut BytesMut) -> Result<(), Self::Error> { + #[allow(clippy::expect_used)] let encoded = bincode::serialize(&item).expect("failed to serialize InputMessage"); let encoded_len = encoded.len() as u32; let mut encoded_with_len = encoded_len.to_le_bytes().to_vec(); @@ -244,7 +245,7 @@ impl Decoder for InputMessageCodec { if buf.len() < LENGHT_ENCODING_PREFIX_SIZE { return Ok(None); } - + #[allow(clippy::expect_used)] let len = u32::from_le_bytes( buf[0..LENGHT_ENCODING_PREFIX_SIZE] .try_into() diff --git a/common/nym-connection-monitor/src/sync_self_ping.rs b/common/nym-connection-monitor/src/sync_self_ping.rs index a23dcece05..8040257102 100644 --- a/common/nym-connection-monitor/src/sync_self_ping.rs +++ b/common/nym-connection-monitor/src/sync_self_ping.rs @@ -3,7 +3,6 @@ use std::time::Duration; -use futures::StreamExt; use nym_sdk::mixnet::{MixnetClient, MixnetMessageSender, Recipient}; use tracing::{debug, error}; diff --git a/mixtcp/examples/cloudflare_ping.rs b/mixtcp/examples/cloudflare_ping.rs index 39e7269baf..e8f4c9a196 100644 --- a/mixtcp/examples/cloudflare_ping.rs +++ b/mixtcp/examples/cloudflare_ping.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] use mixtcp::{create_device, MixtcpError}; use rustls::{pki_types::ServerName, ClientConfig, ClientConnection}; use std::{ @@ -97,7 +98,7 @@ fn inspect_tls_packet(data: &[u8]) { return; } let content_type = data[0]; - if content_type < 0x14 || content_type > 0x17 { + if !(0x14..=0x17).contains(&content_type) { return; } let version = u16::from_be_bytes([data[1], data[2]]); diff --git a/mixtcp/examples/https_client.rs b/mixtcp/examples/https_client.rs index fa85431b83..99b01024c2 100644 --- a/mixtcp/examples/https_client.rs +++ b/mixtcp/examples/https_client.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] use mixtcp::{create_device, MixtcpError, NymIprDevice}; use nym_sdk::stream_wrapper::IpMixStream; use reqwest::StatusCode; diff --git a/mixtcp/examples/tls.rs b/mixtcp/examples/tls.rs index 2552c1806a..05ae093074 100644 --- a/mixtcp/examples/tls.rs +++ b/mixtcp/examples/tls.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] use mixtcp::{create_device, MixtcpError}; use rustls::{pki_types::ServerName, ClientConfig, ClientConnection}; use std::{ @@ -97,7 +98,7 @@ fn inspect_tls_packet(data: &[u8]) { return; } let content_type = data[0]; - if content_type < 0x14 || content_type > 0x17 { + if !(0x14..=0x17).contains(&content_type) { return; } let version = u16::from_be_bytes([data[1], data[2]]); @@ -199,7 +200,7 @@ async fn main() -> Result<(), Box> { } } - if start.elapsed().as_secs() % 5 == 0 && start.elapsed().as_millis() % 1000 < 100 { + if start.elapsed().as_secs().is_multiple_of(5) && start.elapsed().as_millis() % 1000 < 100 { info!( "State: TCP={:?}, established={}, can_send={}, can_recv={}", socket.state(), @@ -224,7 +225,9 @@ async fn main() -> Result<(), Box> { let _ = tls_conn.read_tls(socket); let _ = tls_conn.write_tls(socket); - if start.elapsed().as_secs() % 10 == 0 && start.elapsed().as_millis() % 1000 < 100 { + if start.elapsed().as_secs().is_multiple_of(10) + && start.elapsed().as_millis() % 1000 < 100 + { info!( "TLS state: handshaking={}, wants_read={}, wants_write={}", tls_conn.conn.is_handshaking(), diff --git a/mixtcp/src/bridge.rs b/mixtcp/src/bridge.rs index a82b77e911..aea60167b4 100644 --- a/mixtcp/src/bridge.rs +++ b/mixtcp/src/bridge.rs @@ -98,7 +98,7 @@ impl NymIprBridge { info!("Incoming packet: {} bytes", packet.len()); // Forward to device via channel - if let Err(_) = self.rx_sender.send(packet.to_vec()) { + if self.rx_sender.send(packet.to_vec()).is_err() { error!("Failed to send packet to device - receiver dropped"); return Err(MixtcpError::ChannelClosed); } diff --git a/mixtcp/src/lib.rs b/mixtcp/src/lib.rs index 76abe07fc6..33fa66cba0 100644 --- a/mixtcp/src/lib.rs +++ b/mixtcp/src/lib.rs @@ -31,10 +31,9 @@ pub async fn create_device( // Get the allocated IPs before moving the stream - need these for proper packet creation // further 'up' the flow in the code calling this fn (see examples/tcp_connect.rs). - let allocated_ips = ipr_stream + let allocated_ips = *ipr_stream .allocated_ips() - .ok_or(MixtcpError::NotConnected)? - .clone(); + .ok_or(MixtcpError::NotConnected)?; // Create channels for device <-> bridge communication let (tx_to_bridge, tx_from_device) = mpsc::unbounded_channel(); diff --git a/nym-gateway-directory/src/error.rs b/nym-gateway-directory/src/error.rs index f7aca83102..5358edd70f 100644 --- a/nym-gateway-directory/src/error.rs +++ b/nym-gateway-directory/src/error.rs @@ -105,6 +105,9 @@ pub enum Error { #[error("invalid score value: {0}. Valid values are: offline, low, medium, high")] InvalidScoreValue(String), + + #[error("ips vec empty")] + NoIpsAvailable, } impl Error { diff --git a/nym-gateway-directory/src/gateway_client.rs b/nym-gateway-directory/src/gateway_client.rs index 662ab75a19..3913f73207 100644 --- a/nym-gateway-directory/src/gateway_client.rs +++ b/nym-gateway-directory/src/gateway_client.rs @@ -166,6 +166,7 @@ impl GatewayClient { .map_err(Box::new)?; // Gets around diff version imports compiler issue for the moment + #[allow(clippy::expect_used)] let network_details_compat = { let json = serde_json::to_string(network_details) .expect("Failed to serialize network details"); @@ -292,12 +293,13 @@ impl GatewayClient { debug!("found the following ips for {gateway_identity}: {ips:?}"); if ips.len() == 1 { // SAFETY: the vector is not empty, so unwrap is fine + #[allow(clippy::unwrap_used)] Ok(ips.pop().unwrap()) } else { // chose a random one if there's more than one // SAFETY: the vector is not empty, so unwrap is fine let mut rng = thread_rng(); - let ip = ips.choose(&mut rng).unwrap(); + let ip = ips.choose(&mut rng).ok_or_else(|| Error::NoIpsAvailable)?; Ok(*ip) } } diff --git a/sdk/rust/nym-sdk/src/lib.rs b/sdk/rust/nym-sdk/src/lib.rs index f5bbaa0f22..96109488ae 100644 --- a/sdk/rust/nym-sdk/src/lib.rs +++ b/sdk/rust/nym-sdk/src/lib.rs @@ -12,9 +12,6 @@ pub mod client_pool; pub mod ip_packet_client; pub mod mixnet; pub mod stream_wrapper; -#[deprecated( - note = "Functionality from this module is mostly superceded by the stream_wrapper::MixSocket and stream_wrapper::MixStreamIPR exports. This module is no longer maintained and will be removed in a future release." -)] pub mod tcp_proxy; pub use error::{Error, Result}; diff --git a/sdk/rust/nym-sdk/src/mixnet/native_client.rs b/sdk/rust/nym-sdk/src/mixnet/native_client.rs index 843ac9a0b1..8cbe284026 100644 --- a/sdk/rust/nym-sdk/src/mixnet/native_client.rs +++ b/sdk/rust/nym-sdk/src/mixnet/native_client.rs @@ -430,8 +430,7 @@ impl AsyncRead for MixnetClient { Ok(_) => {} Err(e) => { error!("failed to encode reconstructed message: {:?}", e); - return Poll::Ready(Err(tokio::io::Error::new( - tokio::io::ErrorKind::Other, + return Poll::Ready(Err(tokio::io::Error::other( "failed to encode reconstructed message", ))); } @@ -453,8 +452,7 @@ impl AsyncWrite for MixnetClient { let msg = match fut.poll_unpin(cx) { Poll::Ready(Some(Ok(msg))) => msg, Poll::Ready(Some(Err(_))) => { - return Poll::Ready(Err(std::io::Error::new( - std::io::ErrorKind::Other, + return Poll::Ready(Err(std::io::Error::other( "failed to read message from input", ))) } @@ -467,8 +465,7 @@ impl AsyncWrite for MixnetClient { let mut fut = pin!(self.client_input.send(msg)); match fut.poll_unpin(cx) { Poll::Ready(Ok(())) => Poll::Ready(Ok(msg_size as usize)), - Poll::Ready(Err(_)) => Poll::Ready(Err(std::io::Error::new( - std::io::ErrorKind::Other, + Poll::Ready(Err(_)) => Poll::Ready(Err(std::io::Error::other( "failed to send message to mixnet", ))), Poll::Pending => Poll::Pending, @@ -479,8 +476,7 @@ impl AsyncWrite for MixnetClient { self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll> { - Sink::poll_flush(self, cx) - .map_err(|_| std::io::Error::new(std::io::ErrorKind::Other, "failed to flush the sink")) + Sink::poll_flush(self, cx).map_err(|_| std::io::Error::other("failed to flush the sink")) } fn poll_shutdown( @@ -534,8 +530,7 @@ impl AsyncWrite for MixnetClientSender { let msg = match fut.poll_unpin(cx) { Poll::Ready(Some(Ok(msg))) => msg, Poll::Ready(Some(Err(_))) => { - return Poll::Ready(Err(std::io::Error::new( - std::io::ErrorKind::Other, + return Poll::Ready(Err(std::io::Error::other( "failed to read message from input", ))) } @@ -548,8 +543,7 @@ impl AsyncWrite for MixnetClientSender { let mut fut = pin!(self.client_input.send(msg)); match fut.poll_unpin(cx) { Poll::Ready(Ok(())) => Poll::Ready(Ok(msg_size as usize)), - Poll::Ready(Err(_)) => Poll::Ready(Err(std::io::Error::new( - std::io::ErrorKind::Other, + Poll::Ready(Err(_)) => Poll::Ready(Err(std::io::Error::other( "failed to send message to mixnet", ))), Poll::Pending => Poll::Pending, @@ -560,8 +554,7 @@ impl AsyncWrite for MixnetClientSender { self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll> { - Sink::poll_flush(self, cx) - .map_err(|_| std::io::Error::new(std::io::ErrorKind::Other, "failed to flush the sink")) + Sink::poll_flush(self, cx).map_err(|_| std::io::Error::other("failed to flush the sink")) } fn poll_shutdown( diff --git a/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper.rs b/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper.rs index 051bd3918d..c9155bd963 100644 --- a/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper.rs +++ b/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper.rs @@ -85,7 +85,7 @@ impl MixStream { /// Nym address of Stream's peer (Nym Client it will communicate with). pub fn peer_addr(&self) -> Recipient { let peer = &self.peer.expect("No Peer set"); - peer.clone() + *peer } /// Our Nym address. @@ -211,7 +211,7 @@ impl MixStreamReader { /// Nym address of Stream's peer (Nym Client it will communicate with). pub fn peer_addr(&self) -> Recipient { let peer = &self.peer.expect("No Peer set"); - peer.clone() + *peer } /// Our Nym address. @@ -350,12 +350,11 @@ mod tests { init_logging(); let receiver_socket = MixSocket::new_test().await?; - let receiver_address = receiver_socket.nym_address().clone(); + let receiver_address = *receiver_socket.nym_address(); let sender_socket = MixSocket::new_test().await?; - let sender_address = sender_socket.nym_address().clone(); - let mut receiver_stream = - MixStream::new(Some(receiver_socket), sender_address.clone()).await; - let mut sender_stream = MixStream::new(Some(sender_socket), receiver_address.clone()).await; + let sender_address = *sender_socket.nym_address(); + let mut receiver_stream = MixStream::new(Some(receiver_socket), sender_address).await; + let mut sender_stream = MixStream::new(Some(sender_socket), receiver_address).await; sender_stream.write_bytes(b"Hello, Mixnet Split!").await?; @@ -403,11 +402,11 @@ mod tests { init_logging(); let sender_socket = MixSocket::new_test().await?; - let sender_address = sender_socket.nym_address().clone(); + let sender_address = *sender_socket.nym_address(); let receiver_socket = MixSocket::new_test().await?; - let receiver_address = receiver_socket.nym_address().clone(); - let sender_stream = MixStream::new(Some(sender_socket), receiver_address.clone()).await; - let receiver_stream = MixStream::new(Some(receiver_socket), sender_address.clone()).await; + let receiver_address = *receiver_socket.nym_address(); + let sender_stream = MixStream::new(Some(sender_socket), receiver_address).await; + let receiver_stream = MixStream::new(Some(receiver_socket), sender_address).await; let (mut sender_reader, mut sender_writer) = sender_stream.split(); let (mut receiver_reader, mut receiver_writer) = receiver_stream.split(); diff --git a/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper_ipr.rs b/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper_ipr.rs index 10366e0284..09e440f7fd 100644 --- a/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper_ipr.rs +++ b/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper_ipr.rs @@ -152,7 +152,7 @@ impl IpMixStream { match self.connect_inner().await { Ok(ip_pair) => { - self.allocated_ips = Some(ip_pair.clone()); + self.allocated_ips = Some(ip_pair); self.connection_state = ConnectionState::Connected; info!( "Connected to IPv4: {}, IPv6: {}", @@ -290,7 +290,7 @@ impl IpMixStream { /// Split for concurrent read/write (like TcpStream::Split) into IpMixnetStreamReader and IpMixnetStreamWriter. pub fn split(self) -> (IpMixStreamReader, IpMixStreamWriter) { debug!("Splitting IpMixStream"); - let local_addr = self.stream.client.nym_address().clone(); + let local_addr = *self.stream.client.nym_address(); let (stream_reader, stream_writer) = self.stream.split(); debug!("Split IpMixStream into Reader and Writer"); @@ -301,7 +301,7 @@ impl IpMixStream { IpMixStreamReader { stream_reader, listener: self.listener, - allocated_ips: self.allocated_ips.clone(), + allocated_ips: self.allocated_ips, connection_state: self.connection_state.clone(), state_tx: Some(state_tx), ips_tx: Some(ips_tx), diff --git a/tools/echo-server/src/lib.rs b/tools/echo-server/src/lib.rs index 4759f6086a..801164e699 100644 --- a/tools/echo-server/src/lib.rs +++ b/tools/echo-server/src/lib.rs @@ -344,7 +344,7 @@ mod tests { let mut client = MixnetClient::connect_new().await?; println!("sending client addr {}", client.nym_address()); - let sender = client.split_sender(); + let mut sender = client.split_sender(); let receiving_task_handle = tokio::spawn(async move { println!("in handle");