From 86066206ac4db781bd38c047de8cc77de0eaf6ff Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Thu, 2 Aug 2012 17:26:36 +0200 Subject: Fix XEP-0115 verification strings (remove duplicate features, sort form values) --- CHANGELOG | 1 + src/base/QXmppDiscoveryIq.cpp | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index a4ce6b10..abf48523 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ QXmpp 0.6.4 (UNRELEASED) ------------------------ + - Fix XEP-0115 verification strings (remove duplicate features, sort form values) - Fix issues: * Issue 144: QXmppBookmarkConference autojoin parsing 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()) - S += field.value().toStringList().join(QLatin1String("<")); - else + if (field.value().canConvert()) { + QStringList list = field.value().toStringList(); + list.sort(); + S += list.join(QLatin1String("<")); + } else { S += field.value().toString(); + } S += QLatin1String("<"); } } else { -- cgit v1.2.3