From 48d3eb28ab8f115ce999c2264303925f9c7ce2a7 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Sun, 5 Sep 2021 16:29:09 +0200 Subject: Implement stanza parsing for Stanza Content Encryption --- src/base/QXmppPubSubEvent.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/base/QXmppPubSubEvent.cpp') 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(); // - - QXmppMessage::serializeExtensions(writer); } /// \endcond -- cgit v1.2.3