From 932bd0660faa10dbfd0b8adfc83983f74e68b202 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Sun, 11 Jan 2026 21:35:28 +0000 Subject: [PATCH] Update SDK modules for &mut self and clippy fixes --- .../parallel_sending_and_receiving.rs | 2 +- sdk/rust/nym-sdk/src/bandwidth/client.rs | 1 + sdk/rust/nym-sdk/src/error.rs | 60 +++++++++++++++++++ sdk/rust/nym-sdk/src/mixnet/client.rs | 2 + sdk/rust/nym-sdk/src/mixnet/paths.rs | 1 + sdk/rust/nym-sdk/src/tcp_proxy.rs | 2 +- .../nym-sdk/src/tcp_proxy/tcp_proxy_client.rs | 2 +- .../nym-sdk/src/tcp_proxy/tcp_proxy_server.rs | 2 +- 8 files changed, 68 insertions(+), 4 deletions(-) diff --git a/sdk/rust/nym-sdk/examples/parallel_sending_and_receiving.rs b/sdk/rust/nym-sdk/examples/parallel_sending_and_receiving.rs index b42ad5ef04..38f7c526e6 100644 --- a/sdk/rust/nym-sdk/examples/parallel_sending_and_receiving.rs +++ b/sdk/rust/nym-sdk/examples/parallel_sending_and_receiving.rs @@ -16,7 +16,7 @@ async fn main() { let our_address = *client.nym_address(); println!("Our client nym address is: {our_address}"); - let sender = client.split_sender(); + let mut sender = client.split_sender(); // receiving task let receiving_task_handle = tokio::spawn(async move { diff --git a/sdk/rust/nym-sdk/src/bandwidth/client.rs b/sdk/rust/nym-sdk/src/bandwidth/client.rs index e1ca588185..fbe2eafbe6 100644 --- a/sdk/rust/nym-sdk/src/bandwidth/client.rs +++ b/sdk/rust/nym-sdk/src/bandwidth/client.rs @@ -29,6 +29,7 @@ where St: Storage + Clone, ::StorageError: Send + Sync + 'static, { + #[allow(clippy::result_large_err)] pub(crate) fn new( network_details: NymNetworkDetails, mnemonic: String, diff --git a/sdk/rust/nym-sdk/src/error.rs b/sdk/rust/nym-sdk/src/error.rs index af7706ec92..28b128daf1 100644 --- a/sdk/rust/nym-sdk/src/error.rs +++ b/sdk/rust/nym-sdk/src/error.rs @@ -1,6 +1,9 @@ use nym_validator_client::nyxd::error::NyxdError; use std::path::PathBuf; +use nym_ip_packet_requests::v8::response::{ConnectFailureReason, IpPacketResponseData}; +use nym_validator_client::nym_api::error::NymAPIError; + /// Top-level Error enum for the mixnet client and its relevant types. #[derive(Debug, thiserror::Error)] pub enum Error { @@ -99,6 +102,63 @@ pub enum Error { #[error("Failed to get shutdown tracker from the task runtime registry: {0}")] RegistryAccess(#[from] nym_task::RegistryAccessError), + #[error("nymsphinx receiver error: {0}")] + MessageRecovery(#[from] nym_sphinx::receiver::MessageRecoveryError), + + #[error("client not connected")] + IprStreamClientNotConnected, + + #[error("client already connected or connecting")] + IprStreamClientAlreadyConnectedOrConnecting, + + #[error("trying to send an anonymous reply but peer surb tag is not set")] + MixStreamSurbTagNotSet, + + #[error("trying to send an outgoing message but receipient address is not set")] + MixStreamRecipientNotSet, + + #[error("listening for connection response timed out")] + IPRConnectResponseTimeout, + + #[error("no next frame: assuming stream is closed")] + IPRClientStreamClosed, + + #[error("expected control response, got {0:?}")] + UnexpectedResponseType(IpPacketResponseData), + + #[error("connect denied: {0:?}")] + ConnectDenied(ConnectFailureReason), + + #[allow(clippy::result_large_err)] + #[error("api directory error: {0}")] + GatewayDirectoryError(#[from] NymAPIError), + + #[error("did not receive Validator endpoint details")] + NoValidatorDetailsAvailable, + + #[error("did not receive URL")] + NoValidatorAPIUrl, + + #[error("did not receive NymVPN API URL")] + NoNymAPIUrl, + + #[error("no available gateway")] + NoGatewayAvailable, + + #[error("no IPR address on selected gateway")] + NoIPRAvailable, + + #[error("message version check failed: {0}")] + IPRMessageVersionCheckFailed(String), + + #[error("no response id found in connect response")] + IPRNoId, + + #[error("Could not find peer address or surb tag")] + MixStreamNoPeerOrSurb, + + #[error("No network env specified on new MixStream")] + MissingStreamConfig, } impl Error { diff --git a/sdk/rust/nym-sdk/src/mixnet/client.rs b/sdk/rust/nym-sdk/src/mixnet/client.rs index 20e562e662..de4a25b4fa 100644 --- a/sdk/rust/nym-sdk/src/mixnet/client.rs +++ b/sdk/rust/nym-sdk/src/mixnet/client.rs @@ -340,6 +340,7 @@ where } /// Construct a [`DisconnectedMixnetClient`] from the setup specified. + #[allow(clippy::result_large_err)] pub fn build(self) -> Result> { let mut client = DisconnectedMixnetClient::new( self.config, @@ -445,6 +446,7 @@ where /// Callers have the option of supplying further parameters to: /// - store persistent identities at a location on-disk, if desired; /// - use SOCKS5 mode + #[allow(clippy::result_large_err)] fn new( config: Config, socks5_config: Option, diff --git a/sdk/rust/nym-sdk/src/mixnet/paths.rs b/sdk/rust/nym-sdk/src/mixnet/paths.rs index 5f8d60a7de..adcb5b9158 100644 --- a/sdk/rust/nym-sdk/src/mixnet/paths.rs +++ b/sdk/rust/nym-sdk/src/mixnet/paths.rs @@ -53,6 +53,7 @@ impl StoragePaths { /// /// This function will return an error if it is passed a path to an existing file instead of a /// directory. + #[allow(clippy::result_large_err)] pub fn new_from_dir>(dir: P) -> Result { let dir = dir.as_ref(); if dir.is_file() { diff --git a/sdk/rust/nym-sdk/src/tcp_proxy.rs b/sdk/rust/nym-sdk/src/tcp_proxy.rs index a622e3f6cf..ddc843adae 100644 --- a/sdk/rust/nym-sdk/src/tcp_proxy.rs +++ b/sdk/rust/nym-sdk/src/tcp_proxy.rs @@ -163,7 +163,7 @@ //! let codec = BytesCodec::new(); //! let mut framed_read = FramedRead::new(read, codec); //! // Much like the tcpstream, split our Nym client into a sender and receiver for concurrent read/write -//! let sender = client.split_sender(); +//! let mut sender = client.split_sender(); //! // The server / service provider address our client is sending messages to will remain static //! let server_addr = server_address; //! // Store outgoing messages in instance of Dashset abstraction diff --git a/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_client.rs b/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_client.rs index f00a5b30c1..4721f4e4cd 100644 --- a/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_client.rs +++ b/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_client.rs @@ -161,7 +161,7 @@ impl NymProxyClient { let codec = BytesCodec::new(); let mut framed_read = FramedRead::new(read, codec); // Much like the tcpstream, split our Nym client into a sender and receiver for concurrent read/write - let sender = client.split_sender(); + let mut sender = client.split_sender(); // The server / service provider address our client is sending messages to will remain static let server_addr = server_address; // Store outgoing messages in instance of Dashset abstraction diff --git a/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_server.rs b/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_server.rs index a45ca51363..61f2d232d4 100644 --- a/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_server.rs +++ b/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_server.rs @@ -217,7 +217,7 @@ impl NymProxyServer { sender .write() .await - .send_reply(surb, bincode::serialize(&reply)?) + .send_reply(surb, &bincode::serialize(&reply)?) .await? } info!(