aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppStun.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2015-08-24 09:16:18 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2015-08-24 09:23:22 +0200
commitc8368d4f6d7af251b7462d896fa40814ddf7ff8c (patch)
tree89eec50ad8b3b03214c2c3e76bfdea83bedf27c5 /src/base/QXmppStun.cpp
parent9b39d2ededda2c48660a3cccc2e32af930ff62ef (diff)
downloadqxmpp-c8368d4f6d7af251b7462d896fa40814ddf7ff8c.tar.gz
ICE: sort candidate pairs according RFC 5245
Diffstat (limited to 'src/base/QXmppStun.cpp')
-rw-r--r--src/base/QXmppStun.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/base/QXmppStun.cpp b/src/base/QXmppStun.cpp
index 5c0d8e85..f6dd84c8 100644
--- a/src/base/QXmppStun.cpp
+++ b/src/base/QXmppStun.cpp
@@ -1550,6 +1550,11 @@ private:
bool m_controlling;
};
+static bool candidatePairPtrLessThan(const CandidatePair *p1, const CandidatePair *p2)
+{
+ return p1->priority() < p2->priority();
+}
+
CandidatePair::CandidatePair(int component, bool controlling)
: checked(QIODevice::NotOpen),
socket(0),
@@ -1828,6 +1833,9 @@ bool QXmppIceComponent::addRemoteCandidate(const QXmppJingleCandidate &candidate
pair->socket = 0;
m_pairs << pair;
}
+
+ qSort(m_pairs.begin(), m_pairs.end(), candidatePairPtrLessThan);
+
return true;
}
@@ -1855,6 +1863,8 @@ CandidatePair *QXmppIceComponent::addRemoteCandidate(QUdpSocket *socket, const Q
pair->socket = socket;
m_pairs << pair;
+ qSort(m_pairs.begin(), m_pairs.end(), candidatePairPtrLessThan);
+
debug(QString("Added candidate %1").arg(pair->toString()));
return pair;
}