Merge PR #245: Use a more unique nonce for the remote connection
This commit is contained in:
commit
f82bc6949c
@ -416,11 +416,18 @@ void AWSConnector::onPublishReceived(const QString &topic, const QByteArray &pay
|
|||||||
storeSyncedNameCache(m_clientName);
|
storeSyncedNameCache(m_clientName);
|
||||||
}
|
}
|
||||||
} else if (topic.startsWith(QString("%1/").arg(m_clientId)) && topic.contains("proxy")) {
|
} else if (topic.startsWith(QString("%1/").arg(m_clientId)) && topic.contains("proxy")) {
|
||||||
QString token = jsonDoc.toVariant().toMap().value("token").toString();
|
QVariantMap payload = jsonDoc.toVariant().toMap();
|
||||||
QString timestamp = jsonDoc.toVariant().toMap().value("timestamp").toString();
|
QString token = payload.value("token").toString();
|
||||||
QString serverUrl = jsonDoc.toVariant().toMap().value("serverUrl").toString();
|
QString nonce;
|
||||||
|
// Backwards compatibility. Old protocol spec had "timestamp", keeping it for a while for backwards compatiblity
|
||||||
|
if (payload.contains("nonce")) {
|
||||||
|
nonce = payload.value("nonce").toString();
|
||||||
|
} else {
|
||||||
|
nonce = payload.value("timestamp").toString();
|
||||||
|
}
|
||||||
|
QString serverUrl = payload.value("serverUrl").toString();
|
||||||
static QHash<QString, QDateTime> dupes;
|
static QHash<QString, QDateTime> dupes;
|
||||||
QString packetId = topic + token + timestamp;
|
QString packetId = topic + token + nonce;
|
||||||
if (dupes.contains(packetId)) {
|
if (dupes.contains(packetId)) {
|
||||||
qCDebug(dcAWS()) << "Dropping duplicate packet";
|
qCDebug(dcAWS()) << "Dropping duplicate packet";
|
||||||
return;
|
return;
|
||||||
@ -432,7 +439,7 @@ void AWSConnector::onPublishReceived(const QString &topic, const QByteArray &pay
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
qCDebug(dcAWS) << "Proxy remote connection request received";
|
qCDebug(dcAWS) << "Proxy remote connection request received";
|
||||||
proxyConnectionRequestReceived(token, timestamp, serverUrl);
|
proxyConnectionRequestReceived(token, nonce, serverUrl);
|
||||||
} else if (topic == QString("%1/notify/response").arg(m_clientId)) {
|
} else if (topic == QString("%1/notify/response").arg(m_clientId)) {
|
||||||
int transactionId = jsonDoc.toVariant().toMap().value("id").toInt();
|
int transactionId = jsonDoc.toVariant().toMap().value("id").toInt();
|
||||||
int status = jsonDoc.toVariant().toMap().value("status").toInt();
|
int status = jsonDoc.toVariant().toMap().value("status").toInt();
|
||||||
|
|||||||
Reference in New Issue
Block a user