diff --git a/src/client.rs b/src/client.rs index 5198f81..2152781 100644 --- a/src/client.rs +++ b/src/client.rs @@ -80,14 +80,14 @@ impl Client { server_certificates, is_session_resumption, ) { - Ok(connection) => connection.request_async( + Ok(connection) => connection.clone().request_async( request, priority, cancellable, move |result| { callback(match result { Ok(response) => Ok(response), - Err(e) => Err(Error::Request(e)), + Err(e) => Err(Error::Request(connection, e)), }) }, ), diff --git a/src/client/connection.rs b/src/client/connection.rs index b7833a7..6be90f1 100644 --- a/src/client/connection.rs +++ b/src/client/connection.rs @@ -15,6 +15,7 @@ use glib::{ object::{Cast, ObjectExt}, }; +#[derive(Debug, Clone)] pub struct Connection { pub network_address: NetworkAddress, pub socket_connection: SocketConnection, diff --git a/src/client/error.rs b/src/client/error.rs index eb951b6..73031da 100644 --- a/src/client/error.rs +++ b/src/client/error.rs @@ -5,7 +5,10 @@ pub enum Error { Connect(gio::NetworkAddress, glib::Error), Connection(gio::SocketConnection, crate::client::connection::Error), NetworkAddress(crate::client::connection::request::Error), - Request(crate::client::connection::Error), + Request( + crate::client::connection::Connection, + crate::client::connection::Error, + ), } impl Display for Error { @@ -20,7 +23,7 @@ impl Display for Error { Self::NetworkAddress(e) => { write!(f, "Network address error: {e}") } - Self::Request(e) => { + Self::Request(_, e) => { write!(f, "Connection error: {e}") } }