diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2020-03-13 08:52:34 +0300 |
---|---|---|
committer | Konstantin Ritt <ritt.ks@gmail.com> | 2020-03-31 12:50:54 +0300 |
commit | bc07e72a43f1ce193ddb0c8b4a8c1482fc59d84f (patch) | |
tree | aadfa3d37e9a986164dbeb3b71f18cdd27354251 | |
parent | 8b90d4808fad9e2fffda02dd90fa48e86d65e171 (diff) |
Prohibit Subscription Identifier in Client to a Server PUBLISH
as per 3.3.4
> A PUBLISH packet sent from a Client to a Server MUST NOT contain a Subscription Identifier
Change-Id: I490d46cdb346b0ebcd47f333ff410835a9c30733
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
-rw-r--r-- | src/mqtt/qmqttconnection.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mqtt/qmqttconnection.cpp b/src/mqtt/qmqttconnection.cpp index be1c4a8..3760c51 100644 --- a/src/mqtt/qmqttconnection.cpp +++ b/src/mqtt/qmqttconnection.cpp @@ -364,6 +364,12 @@ qint32 QMqttConnection::sendControlPublish(const QMqttTopicName &topic, // topic alias QMqttPublishProperties publishProperties(properties); if (m_clientPrivate->m_protocolVersion == QMqttClient::MQTT_5_0) { + // 3.3.4 A PUBLISH packet sent from a Client to a Server MUST NOT contain a Subscription Identifier + if (publishProperties.availableProperties() & QMqttPublishProperties::SubscriptionIdentifier) { + qCWarning(lcMqttConnection) << "SubscriptionIdentifier must not be specified for publish."; + return -1; + } + const quint16 topicAlias = publishProperties.topicAlias(); if (topicAlias > 0) { // User specified topic Alias if (topicAlias > m_clientPrivate->m_serverConnectionProperties.maximumTopicAlias()) { |