aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2020-04-01 01:27:20 +0200
committerLinus Jahn <lnj@kaidan.im>2020-04-01 01:27:20 +0200
commit03764c9abcd3c79873038935566f4e31a845ada9 (patch)
treebe9cfece301df46606ba6eef62dec3d60b5397b7 /src/client
parent553b95576ee5cc3e74a47a221bdc2627de739cfe (diff)
parent3ab1d34eceb8776193fe1cdc2070264d7dfbad30 (diff)
downloadqxmpp-03764c9abcd3c79873038935566f4e31a845ada9.tar.gz
Merge branch 'stable'
Diffstat (limited to 'src/client')
-rw-r--r--src/client/QXmppMessageReceiptManager.cpp2
-rw-r--r--src/client/QXmppRegistrationManager.cpp2
-rw-r--r--src/client/QXmppRosterManager.cpp4
-rw-r--r--src/client/QXmppVCardManager.cpp2
4 files changed, 8 insertions, 2 deletions
diff --git a/src/client/QXmppMessageReceiptManager.cpp b/src/client/QXmppMessageReceiptManager.cpp
index 3b5c0159..27d96d11 100644
--- a/src/client/QXmppMessageReceiptManager.cpp
+++ b/src/client/QXmppMessageReceiptManager.cpp
@@ -64,7 +64,7 @@ bool QXmppMessageReceiptManager::handleStanza(const QDomElement &stanza)
}
// If requested, send a receipt.
- if (message.isReceiptRequested() && !message.from().isEmpty() && !message.id().isEmpty()) {
+ if (message.isReceiptRequested() && !message.from().isEmpty() && !message.id().isEmpty() && message.type() != QXmppMessage::Error) {
QXmppMessage receipt;
receipt.setTo(message.from());
receipt.setReceiptId(message.id());
diff --git a/src/client/QXmppRegistrationManager.cpp b/src/client/QXmppRegistrationManager.cpp
index d43a82e5..da220bf0 100644
--- a/src/client/QXmppRegistrationManager.cpp
+++ b/src/client/QXmppRegistrationManager.cpp
@@ -228,9 +228,11 @@ bool QXmppRegistrationManager::handleStanza(const QDomElement &stanza)
case QXmppIq::Result:
info(QStringLiteral("Successfully registered with the service."));
emit registrationSucceeded();
+ break;
case QXmppIq::Error:
warning(QStringLiteral("Registering with the service failed: ").append(iq.error().text()));
emit registrationFailed(iq.error());
+ break;
default:
break; // should never occur
}
diff --git a/src/client/QXmppRosterManager.cpp b/src/client/QXmppRosterManager.cpp
index 7bba45ec..9da4fd8f 100644
--- a/src/client/QXmppRosterManager.cpp
+++ b/src/client/QXmppRosterManager.cpp
@@ -282,6 +282,10 @@ bool QXmppRosterManager::renameItem(const QString &bareJid, const QString &name)
QXmppRosterIq::Item item = d->entries.value(bareJid);
item.setName(name);
+ // If there is a pending subscription, do not include the corresponding attribute in the stanza.
+ if (!item.subscriptionStatus().isEmpty())
+ item.setSubscriptionStatus({});
+
QXmppRosterIq iq;
iq.setType(QXmppIq::Set);
iq.addItem(item);
diff --git a/src/client/QXmppVCardManager.cpp b/src/client/QXmppVCardManager.cpp
index 8a1b4bab..039a82c3 100644
--- a/src/client/QXmppVCardManager.cpp
+++ b/src/client/QXmppVCardManager.cpp
@@ -113,7 +113,7 @@ bool QXmppVCardManager::handleStanza(const QDomElement& element)
QXmppVCardIq vCardIq;
vCardIq.parse(element);
- if (vCardIq.from().isEmpty()) {
+ if (vCardIq.from().isEmpty() || vCardIq.from() == client()->configuration().jidBare()) {
d->clientVCard = vCardIq;
d->isClientVCardReceived = true;
emit clientVCardReceived();