diff options
Diffstat (limited to 'src/client/QXmppMessageReceiptManager.cpp')
| -rw-r--r-- | src/client/QXmppMessageReceiptManager.cpp | 8 |
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; } |
