aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
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();