aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppMessageReceiptManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/QXmppMessageReceiptManager.cpp')
-rw-r--r--src/client/QXmppMessageReceiptManager.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/client/QXmppMessageReceiptManager.cpp b/src/client/QXmppMessageReceiptManager.cpp
index 2abe32a6..c010eadf 100644
--- a/src/client/QXmppMessageReceiptManager.cpp
+++ b/src/client/QXmppMessageReceiptManager.cpp
@@ -29,6 +29,7 @@
#include "QXmppConstants_p.h"
#include "QXmppMessage.h"
#include "QXmppClient.h"
+#include "QXmppUtils.h"
/// Constructs a QXmppMessageReceiptManager to handle incoming and outgoing
/// message delivery receipts.
@@ -54,7 +55,12 @@ bool QXmppMessageReceiptManager::handleStanza(const QDomElement &stanza)
// Handle receipts and cancel any further processing.
if (!message.receiptId().isEmpty()) {
- emit messageDelivered(message.from(), message.receiptId());
+ // Buggy clients also mark carbon messages as received; to avoid this
+ // we check whether sender and receiver have the same bare JID.
+ if (QXmppUtils::jidToBareJid(message.from())
+ != QXmppUtils::jidToBareJid(message.to())) {
+ emit messageDelivered(message.from(), message.receiptId());
+ }
return true;
}