From c5d10e020a1d246aa1bd5ae521cde03f06155e6d Mon Sep 17 00:00:00 2001 From: yggverse Date: Wed, 23 Jul 2025 01:27:20 +0300 Subject: [PATCH] return `Connection` on `Request` error --- src/client.rs | 4 ++-- src/client/connection.rs | 1 + src/client/error.rs | 7 +++++-- 3 files changed, 8 insertions(+), 4 deletions(-) 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}") } }