From 3e794d3f50e31bccee8bd3a7bda44b83bc6e0ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20=E2=80=9Cpep=E2=80=9D=20Buquet?= Date: Tue, 26 Aug 2025 23:28:05 +0200 Subject: [PATCH] xmpp: extend escape-hatch feature to the receiving part MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maxime “pep” Buquet --- xmpp/ChangeLog | 3 ++- xmpp/src/event.rs | 2 ++ xmpp/src/event_loop.rs | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/xmpp/ChangeLog b/xmpp/ChangeLog index 1a7c673ea9140ee73526bdd5ab3c058fd37484f4..a479ac31976590490762627d27fbda9c8905afdd 100644 --- a/xmpp/ChangeLog +++ b/xmpp/ChangeLog @@ -39,7 +39,8 @@ XXXX-YY-ZZ [ RELEASER ] hibernating resources around. - New 'escape-hatch' feature: Allow sending tokio_xmpp::Stanza directly instead of having to go through xmpp-rs' API when it's lacking. This - is meant to stay behind a feature. + is meant to stay behind a feature. Also allows directly receiving + TokioXmppEvent. - Added documentation on `Event` enum. * Fixes: - Use tokio::sync::RwLock not std::sync::RwLock (!432) diff --git a/xmpp/src/event.rs b/xmpp/src/event.rs index 53edf226973ed58766c8929db5f6dd393ec2142c..32f5db22e20151445af1a43d7608b18f0a5987c9 100644 --- a/xmpp/src/event.rs +++ b/xmpp/src/event.rs @@ -112,4 +112,6 @@ pub enum Event { ServiceMessage(Option, BareJid, String, StanzaTimeInfo), /// A file has been uploaded over HTTP; contains the URL of the file. HttpUploadedFile(String), + #[cfg(feature = "escape-hatch")] + TokioXmppEvent(TokioXmppEvent), } diff --git a/xmpp/src/event_loop.rs b/xmpp/src/event_loop.rs index 86a977760dc967d705bafefc316e5de3159648fb..cced3ab2f4abfadc4c82f473005b32b6c2e7a918 100644 --- a/xmpp/src/event_loop.rs +++ b/xmpp/src/event_loop.rs @@ -17,6 +17,9 @@ pub async fn wait_for_events(agent: &mut Agent) -> Vec { if let Some(event) = agent.client.next().await { let mut events = Vec::new(); + #[cfg(feature = "escape-hatch")] + events.push(Event::TokioXmppEvent(event.clone())); + match event { TokioXmppEvent::Online { resumed: false, .. } => { let presence =