From e703284539384b461d204c73e7e14daead3f06d9 Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Thu, 27 Mar 2025 14:26:27 +0000 Subject: feat: disco info from server --- lampada/src/lib.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lampada/src/lib.rs') diff --git a/lampada/src/lib.rs b/lampada/src/lib.rs index a01ba06..7346c42 100644 --- a/lampada/src/lib.rs +++ b/lampada/src/lib.rs @@ -34,6 +34,8 @@ pub struct Connected { // full jid will stay stable across reconnections jid: JID, write_handle: WriteHandle, + // the server jid + server: JID, } impl Connected { @@ -44,6 +46,10 @@ impl Connected { pub fn write_handle(&self) -> &WriteHandle { &self.write_handle } + + pub fn server(&self) -> &JID { + &self.server + } } /// everything that a particular xmpp client must implement @@ -166,6 +172,18 @@ impl CoreClient { let streams_result = luz::connect_and_login(&mut jid, &*self.password, &mut domain) .await; + let server: JID = match domain.parse() { + Ok(j) => j, + Err(e) => { + self.logic + .clone() + .handle_connection_error(ConnectionError::InvalidServerJID( + e, + )) + .await; + continue; + } + }; match streams_result { Ok(s) => { debug!("ok stream result"); @@ -174,6 +192,7 @@ impl CoreClient { s, shutdown_send, jid.clone(), + server.clone(), self.password.clone(), self.logic.clone(), ); @@ -184,6 +203,7 @@ impl CoreClient { let connected = Connected { jid, write_handle: writer, + server, }; self.logic.clone().handle_connect(connected.clone()).await; -- cgit