summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2020-03-13 08:52:34 +0300
committerKonstantin Ritt <ritt.ks@gmail.com>2020-03-31 12:50:54 +0300
commitbc07e72a43f1ce193ddb0c8b4a8c1482fc59d84f (patch)
treeaadfa3d37e9a986164dbeb3b71f18cdd27354251
parent8b90d4808fad9e2fffda02dd90fa48e86d65e171 (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.cpp6
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()) {