aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-05-09 18:20:27 +0200
committerLinus Jahn <lnj@kaidan.im>2022-05-12 14:31:49 +0200
commit8a9bae9f60de9789e391291372df26ef93b7fd75 (patch)
tree15157290bda352cc554fb52a38bab69d8655e5f4 /src/base
parent9de673a1c44dfc4be9651838b8abca1298c536b8 (diff)
downloadqxmpp-8a9bae9f60de9789e391291372df26ef93b7fd75.tar.gz
Message: Do not allow XEP-0184 request and received element together
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppMessage.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp
index 46b8c797..abae1123 100644
--- a/src/base/QXmppMessage.cpp
+++ b/src/base/QXmppMessage.cpp
@@ -1598,13 +1598,15 @@ void QXmppMessage::serializeExtensions(QXmlStreamWriter *writer, QXmpp::SceMode
}
// XEP-0184: Message Delivery Receipts
+ // An ack message (message containing a "received" element) must not
+ // include a receipt request ("request" element) in order to prevent
+ // looping.
if (!d->receiptId.isEmpty()) {
writer->writeStartElement(QStringLiteral("received"));
writer->writeDefaultNamespace(ns_message_receipts);
writer->writeAttribute(QStringLiteral("id"), d->receiptId);
writer->writeEndElement();
- }
- if (d->receiptRequested) {
+ } else if (d->receiptRequested) {
writer->writeStartElement(QStringLiteral("request"));
writer->writeDefaultNamespace(ns_message_receipts);
writer->writeEndElement();