aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/QXmppClient.cpp7
-rw-r--r--src/client/QXmppClientExtension.cpp3
2 files changed, 9 insertions, 1 deletions
diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp
index b1c60233..b371e052 100644
--- a/src/client/QXmppClient.cpp
+++ b/src/client/QXmppClient.cpp
@@ -111,8 +111,13 @@ namespace QXmpp::Private::StanzaPipeline {
bool process(const QList<QXmppClientExtension *> &extensions, const QDomElement &element, const std::optional<QXmppE2eeMetadata> &e2eeMetadata)
{
+ const bool unencrypted = !e2eeMetadata.has_value();
for (auto *extension : extensions) {
- if (extension->handleStanza(element, e2eeMetadata) || extension->handleStanza(element)) {
+ // e2e encrypted stanzas are not passed to the old handleStanza() overload, because such
+ // managers are likely not handling the encrypted contents correctly (e.g. sending
+ // unencrypted replies and thereby leaking information).
+ if (extension->handleStanza(element, e2eeMetadata) ||
+ (unencrypted && extension->handleStanza(element))) {
return true;
}
}
diff --git a/src/client/QXmppClientExtension.cpp b/src/client/QXmppClientExtension.cpp
index c5e00c21..eb6ec907 100644
--- a/src/client/QXmppClientExtension.cpp
+++ b/src/client/QXmppClientExtension.cpp
@@ -53,6 +53,9 @@ QList<QXmppDiscoveryIq::Identity> QXmppClientExtension::discoveryIdentities() co
/// processing should occur, or false to let other extensions process
/// the stanza.
///
+/// End-to-end encrypted stanzas are not passed to this overload, for that
+/// purpose use the new overload instead.
+///
/// \deprecated This is deprecated since QXmpp 1.5. Please use
/// QXmppClientExtension::handleStanza(const QDomElement &stanza,
/// const std::optional<QXmppE2eeMetadata> &e2eeMetadata).