diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/QXmppClient.cpp | 7 | ||||
| -rw-r--r-- | src/client/QXmppClientExtension.cpp | 3 |
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). |
