aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppPubSubEvent.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2021-09-05 16:29:09 +0200
committerLinus Jahn <lnj@kaidan.im>2021-09-28 17:08:08 +0200
commit48d3eb28ab8f115ce999c2264303925f9c7ce2a7 (patch)
tree3602342cbefb4c34bcbb61e08d17960e5ec69d3f /src/base/QXmppPubSubEvent.cpp
parent22be2464b5d253e840d4731fbc86e9633a394e8c (diff)
downloadqxmpp-48d3eb28ab8f115ce999c2264303925f9c7ce2a7.tar.gz
Implement stanza parsing for Stanza Content Encryption
Diffstat (limited to 'src/base/QXmppPubSubEvent.cpp')
-rw-r--r--src/base/QXmppPubSubEvent.cpp18
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