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) --- src/base/QXmppDiscoveryIq.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/base/QXmppDiscoveryIq.cpp') 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