diff options
| author | Linus Jahn <lnj@kaidan.im> | 2021-09-05 16:29:09 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-09-28 17:08:08 +0200 |
| commit | 48d3eb28ab8f115ce999c2264303925f9c7ce2a7 (patch) | |
| tree | 3602342cbefb4c34bcbb61e08d17960e5ec69d3f /src/base/QXmppPubSubEvent.cpp | |
| parent | 22be2464b5d253e840d4731fbc86e9633a394e8c (diff) | |
| download | qxmpp-48d3eb28ab8f115ce999c2264303925f9c7ce2a7.tar.gz | |
Implement stanza parsing for Stanza Content Encryption
Diffstat (limited to 'src/base/QXmppPubSubEvent.cpp')
| -rw-r--r-- | src/base/QXmppPubSubEvent.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/base/QXmppPubSubEvent.cpp b/src/base/QXmppPubSubEvent.cpp index 012d4fb2..bd0783ce 100644 --- a/src/base/QXmppPubSubEvent.cpp +++ b/src/base/QXmppPubSubEvent.cpp @@ -308,9 +308,11 @@ bool QXmppPubSubEventBase::isPubSubEvent(const QDomElement &stanza, std::functio return true; } -bool QXmppPubSubEventBase::parseExtension(const QDomElement &eventElement) +bool QXmppPubSubEventBase::parseExtension(const QDomElement &eventElement, QXmpp::SceMode sceMode) { - if (eventElement.tagName() == QStringLiteral("event") && eventElement.namespaceURI() == ns_pubsub_event) { + if (sceMode & QXmpp::SceSensitive && + eventElement.tagName() == QStringLiteral("event") && + eventElement.namespaceURI() == ns_pubsub_event) { // check that the query type is valid const auto eventTypeElement = eventElement.firstChildElement(); if (const auto index = PUBSUB_EVENTS.indexOf(eventTypeElement.tagName()); @@ -370,14 +372,20 @@ bool QXmppPubSubEventBase::parseExtension(const QDomElement &eventElement) } } else { // handles QXmppMessage default extensions - return QXmppMessage::parseExtension(eventElement); + return QXmppMessage::parseExtension(eventElement, sceMode); } return true; } -void QXmppPubSubEventBase::serializeExtensions(QXmlStreamWriter *writer) const +void QXmppPubSubEventBase::serializeExtensions(QXmlStreamWriter *writer, QXmpp::SceMode sceMode, const QString &baseNamespace) const { + QXmppMessage::serializeExtensions(writer, sceMode, baseNamespace); + + if (!(sceMode & QXmpp::SceSensitive)) { + return; + } + writer->writeStartElement(QStringLiteral("event")); writer->writeDefaultNamespace(ns_pubsub_event); @@ -434,7 +442,5 @@ void QXmppPubSubEventBase::serializeExtensions(QXmlStreamWriter *writer) const writer->writeEndElement(); // close event's type element } writer->writeEndElement(); // </event> - - QXmppMessage::serializeExtensions(writer); } /// \endcond |
