aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/QXmppClient.cpp')
-rw-r--r--src/client/QXmppClient.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp
index 0b14bc68..b1c60233 100644
--- a/src/client/QXmppClient.cpp
+++ b/src/client/QXmppClient.cpp
@@ -107,6 +107,20 @@ QStringList QXmppClientPrivate::discoveryFeatures()
}
/// \endcond
+namespace QXmpp::Private::StanzaPipeline {
+
+bool process(const QList<QXmppClientExtension *> &extensions, const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata)
+{
+ for (auto *extension : extensions) {
+ if (extension->handleStanza(element, e2eeMetadata) || extension->handleStanza(element)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+}
+
///
/// \typedef QXmppClient::IqResult
///
@@ -765,20 +779,14 @@ QXmppVersionManager &QXmppClient::versionManager()
return *findExtension<QXmppVersionManager>();
}
+///
/// Give extensions a chance to handle incoming stanzas.
///
-/// \param element
-/// \param handled
-
void QXmppClient::_q_elementReceived(const QDomElement &element, bool &handled)
{
- const std::optional<QXmppE2eeMetadata> e2eeMetadata;
- for (auto *extension : std::as_const(d->extensions)) {
- if (extension->handleStanza(element, e2eeMetadata) || extension->handleStanza(element)) {
- handled = true;
- return;
- }
- }
+ // The stanza comes directly from the XMPP stream, so it's not end-to-end
+ // encrypted and there's no e2ee metadata (std::nullopt).
+ handled = StanzaPipeline::process(d->extensions, element, std::nullopt);
}
void QXmppClient::_q_reconnect()