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.cpp7
1 files changed, 6 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;
}
}