diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-08-02 17:26:36 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-08-02 17:26:36 +0200 |
| commit | 86066206ac4db781bd38c047de8cc77de0eaf6ff (patch) | |
| tree | 7db7827339c259da45122f4d39b51925e00a4d50 /src/base | |
| parent | db134ac8c8238f57ba710562e37f6cda99017db0 (diff) | |
| download | qxmpp-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.cpp | 10 |
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 { |
