aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppStun.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2015-08-16 18:13:13 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2015-08-16 18:13:13 +0200
commitf84c59bed45d516c76022d1a55c875478078e0cc (patch)
tree37b2b9128c989ac033f8c259d4cbba0d1e5cd562 /src/base/QXmppStun.cpp
parent789ec0d6d1fbf0f8973c153da18897cd1f2bc283 (diff)
downloadqxmpp-f84c59bed45d516c76022d1a55c875478078e0cc.tar.gz
generate ICE tie breaker instead of 0
Diffstat (limited to 'src/base/QXmppStun.cpp')
-rw-r--r--src/base/QXmppStun.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/base/QXmppStun.cpp b/src/base/QXmppStun.cpp
index 9a341111..9d9872a0 100644
--- a/src/base/QXmppStun.cpp
+++ b/src/base/QXmppStun.cpp
@@ -1584,6 +1584,7 @@ QXmppIceComponent::QXmppIceComponent(QObject *parent)
m_localUser = QXmppUtils::generateStanzaHash(4);
m_localPassword = QXmppUtils::generateStanzaHash(22);
+ m_tieBreaker = QXmppUtils::generateRandomBytes(8);
m_timer = new QTimer(this);
m_timer->setInterval(500);
@@ -1657,10 +1658,10 @@ void QXmppIceComponent::checkCandidates()
message.setUsername(QString("%1:%2").arg(m_remoteUser, m_localUser));
if (m_iceControlling)
{
- message.iceControlling = QByteArray(8, 0);
+ message.iceControlling = m_tieBreaker;
message.useCandidate = true;
} else {
- message.iceControlled = QByteArray(8, 0);
+ message.iceControlled = m_tieBreaker;
}
writeStun(message, pair);
}
@@ -1742,6 +1743,15 @@ void QXmppIceComponent::setLocalUser(const QString &user)
m_localUser = user;
}
+/// Sets the tie breaker.
+///
+/// \param tieBreaker
+
+void QXmppIceComponent::setTieBreaker(const QByteArray &tieBreaker)
+{
+ m_tieBreaker = tieBreaker;
+}
+
/// Sets the local password.
///
/// \param password
@@ -2080,7 +2090,7 @@ void QXmppIceComponent::handleDatagram(const QByteArray &buffer, const QHostAddr
message.setType(QXmppStunMessage::Binding | QXmppStunMessage::Request);
message.setPriority(m_peerReflexivePriority);
message.setUsername(QString("%1:%2").arg(m_remoteUser, m_localUser));
- message.iceControlled = QByteArray(8, 0);
+ message.iceControlled = m_tieBreaker;
writeStun(message, pair);
}
@@ -2301,6 +2311,7 @@ QXmppIceConnection::QXmppIceConnection(QObject *parent)
m_localUser = QXmppUtils::generateStanzaHash(4);
m_localPassword = QXmppUtils::generateStanzaHash(22);
+ m_tieBreaker = QXmppUtils::generateRandomBytes(8);
// timer to limit connection time to 30 seconds
m_connectTimer = new QTimer(this);
@@ -2342,6 +2353,7 @@ void QXmppIceConnection::addComponent(int component)
socket->setIceControlling(m_iceControlling);
socket->setLocalUser(m_localUser);
socket->setLocalPassword(m_localPassword);
+ socket->setTieBreaker(m_tieBreaker);
socket->setStunServer(m_stunHost, m_stunPort);
socket->setTurnServer(m_turnHost, m_turnPort);
socket->setTurnUser(m_turnUser);