aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-08-02 17:26:36 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-08-02 17:26:36 +0200
commit86066206ac4db781bd38c047de8cc77de0eaf6ff (patch)
tree7db7827339c259da45122f4d39b51925e00a4d50 /src/base
parentdb134ac8c8238f57ba710562e37f6cda99017db0 (diff)
downloadqxmpp-86066206ac4db781bd38c047de8cc77de0eaf6ff.tar.gz
Fix XEP-0115 verification strings (remove duplicate features, sort form values)
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppDiscoveryIq.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/base/QXmppDiscoveryIq.cpp b/src/base/QXmppDiscoveryIq.cpp
index 5ded03e4..a9fbe1e2 100644
--- a/src/base/QXmppDiscoveryIq.cpp
+++ b/src/base/QXmppDiscoveryIq.cpp
@@ -202,6 +202,7 @@ QByteArray QXmppDiscoveryIq::verificationString() const
qSort(sortedIdentities.begin(), sortedIdentities.end(), identityLessThan);
QStringList sortedFeatures = m_features;
qSort(sortedFeatures);
+ sortedFeatures.removeDuplicates();
foreach (const QXmppDiscoveryIq::Identity &identity, sortedIdentities)
S += QString("%1/%2/%3/%4<").arg(identity.category(), identity.type(), identity.language(), identity.name());
foreach (const QString &feature, sortedFeatures)
@@ -222,10 +223,13 @@ QByteArray QXmppDiscoveryIq::verificationString() const
foreach (const QString &key, keys) {
const QXmppDataForm::Field field = fieldMap.value(key);
S += key + QLatin1String("<");
- if (field.value().canConvert<QStringList>())
- S += field.value().toStringList().join(QLatin1String("<"));
- else
+ if (field.value().canConvert<QStringList>()) {
+ QStringList list = field.value().toStringList();
+ list.sort();
+ S += list.join(QLatin1String("<"));
+ } else {
S += field.value().toString();
+ }
S += QLatin1String("<");
}
} else {