diff --git a/src/client/connection.rs b/src/client/connection.rs index 7eb1b11..3bc80d9 100644 --- a/src/client/connection.rs +++ b/src/client/connection.rs @@ -47,15 +47,20 @@ impl Connection { /// Close owned [SocketConnection](https://docs.gtk.org/gio/class.SocketConnection.html) /// and [TlsClientConnection](https://docs.gtk.org/gio/iface.TlsClientConnection.html) if active - pub fn close(&self, cancellable: Option<&Cancellable>) { + pub fn close(&self, cancellable: Option<&Cancellable>) -> Result<(), Error> { if let Some(ref tls_client_connection) = self.tls_client_connection { if !tls_client_connection.is_closed() { - tls_client_connection.close(cancellable); + if let Err(reason) = tls_client_connection.close(cancellable) { + return Err(Error::TlsClientConnection(reason)); + } } } if !self.socket_connection.is_closed() { - self.socket_connection.close(cancellable); + if let Err(reason) = self.socket_connection.close(cancellable) { + return Err(Error::SocketConnection(reason)); + } } + Ok(()) } // Getters diff --git a/src/client/connection/error.rs b/src/client/connection/error.rs index 48eed23..41e0efa 100644 --- a/src/client/connection/error.rs +++ b/src/client/connection/error.rs @@ -3,6 +3,7 @@ use std::fmt::{Display, Formatter, Result}; #[derive(Debug)] pub enum Error { SocketConnectionClosed, + SocketConnection(glib::Error), TlsClientConnection(glib::Error), } @@ -10,8 +11,11 @@ impl Display for Error { fn fmt(&self, f: &mut Formatter) -> Result { match self { Self::SocketConnectionClosed => write!(f, "Socket connection closed"), + Self::SocketConnection(reason) => { + write!(f, "Socket connection error: {reason}") + } Self::TlsClientConnection(reason) => { - write!(f, "Could not create TLS connection: {reason}") + write!(f, "TLS client connection error: {reason}") } } }