1
0
mirror of https://github.com/qt/qtmqtt.git synced 2026-10-25 16:16:26 +00:00
Commit Graph

1126 Commits

Author SHA1 Message Date
Qt Submodule Update Bot
24678da81e Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I0c6fb192baf73ae18b8ced356af0890d1d402c57
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-09-22 13:35:15 +00:00
Tatiana Borisova
21b866609f The Qt app can freeze forever if the broker sends a bad message
- When QMqttConnection reads a message, it keeps a count of the bytes
left to read -> by the dataSize argument. If a read fails, the count
is never reduced.
- The fix cleaning up the count of the bytes left to read, since
the reading is not working anymore and parsing should be stopped.
It allows to get read of potential freezes.

The patch also updates the QByteArray specialization to return a
default-constructed QBA in case of an error. This is more in line
with the default implementation.

Pick-to: 6.11 6.12 6.8
Task-number: QTBUG-149563
Change-Id: I8c8c5ef354103a996ac6e360fbc5c8f61d965f3d
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2026-09-15 09:06:31 +00:00
Qt Submodule Update Bot
6bdaef48c7 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I23dabe0789f9adc00ba3ab1e9af553c6e2eb3c67
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-09-14 22:30:33 +00:00
Qt Submodule Update Bot
c58aedad7a Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Id764db97c594b958cfc84a80ae85b6c5c0ad5574
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-09-10 00:05:42 +00:00
Qt Submodule Update Bot
dd767d7a57 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Ic7d9314b90e2ff088c84f49acbc8a46f4258b1fb
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-09-02 05:07:22 +00:00
Tatiana Borisova
06d301aa50 Read the Remaining Length as a variable byte integer everywhere
- Every MQTT packet begins with a fixed header, whose second field is the
Remaining Length: the number of bytes that follow. It is not a byte. It
is spread over one to four bytes, seven value bits each, with the top
bit meaning "another byte follows". So values up to 127 take one byte,
and larger values take more.

Six packet types read it as a single quint8: SUBACK, UNSUBACK, PUBACK,
PUBREC, PUBREL and PUBCOMP. For most of them that used to be correct.
In MQTT 3.1.1 those packets contain nothing but a two byte identifier,
so the length was always exactly 2, which always fits in one byte. The
code did not even use the byte it read: it checked that the value was 2
and then hardcoded the length.

MQTT 5.0 support (ac66658) gave those packets an optional reason code
and properties, so the length can now be far above 127. That commit
switched off the "must be 2" check for MQTT 5.0 and began using the
byte as the real length, but kept reading only one byte. The check had
been the only thing making a one byte read safe, because a multi-byte
length always has its top bit set and so could never equal 2.

SUBACK never had a fixed length at all, since its payload carries one
reason code per subscribed topic filter. It has been misparsed for any
SUBACK above 127 bytes since the parser was written (d96011b).

Reading one byte of a two byte length consumes one byte too few, so the
remainder of the packet is then read as the next packet's header. The
client rejects a valid acknowledgement and stays out of step for the
rest of the connection. Brokers trigger this on ordinary traffic as
soon as they attach a reason string or user properties.

All six now use readVariableByteInteger(), and each rejects a length too
short to hold the fields the specification requires.

PUBREL also accepted a length of exactly 2 even for MQTT 5.0, which
rejected valid PUBREL packets carrying a reason code. It now accepts 2
or more there, and still requires exactly 2 for MQTT 3.1.1.

- Adds three regression tests driving the parser through the existing
FakeServer, so they need no broker.

Pick-to: 6.11 6.12 6.8
Task-number: QTBUG-149569
Change-Id: Ib239d836556e0cc14e13c116dee757fdd1a7ae81
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2026-09-01 17:40:37 +00:00
Tatiana Borisova
33538c5143 PINGRESP from the network should not push the counter below zero
- finalize_pingresp() lowers m_pingTimeout every time, with no lower
limit. A broker can send a pile of unasked-for replies to push the
counter deep below zero, and then the client can spend some unexpected
amount of time to reach back the number that means:
"the broker has stopped answering, drop the link.”
- The fix prohibits pushing the counter below zero.

Task-number: QTBUG-149662
Pick-to: 6.11 6.12 6.8
Change-Id: I7b25e8ac3f83fa262a19010df9a91b2ee1c006fd
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2026-09-01 14:32:40 +00:00
Tatiana Borisova
9e0428b917 Skip remaining data for messages with unknown requests
- finalize_suback() and finalize_unsuback() read the 2-byte request ID.
If no matching request was found, they returned immediately.
However, m_missingData remained non-zero.
The leftover bytes are then incorrectly interpreted as the header of
the next message!

- This change fixes the issue universally for all handlers in the
processDataHelper().

Pick-to: 6.11 6.12 6.8
Task-number: QTBUG-149570
Change-Id: I06c86414c3297caa386059a02fdec5c3765a0315
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2026-09-01 10:52:32 +00:00
Qt Submodule Update Bot
c7f7555d8e Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Ic8fadb4442f209a70a15a076d56b166f4d122f75
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-09-01 00:54:22 +00:00
Tatiana Borisova
011eb1e424 Fix topic alias bounds and storage sizes
- In the f8ecf4d56a we found that the
m_receiveAliases bounds check used a wrong property:
m_clientPrivate->m_serverConnectionProperties.maximumTopicAlias(),
but it must use instead:
m_clientPrivate->m_connectionProperties.maximumTopicAlias().

So, the idea is m_receiveAliases is sized according to the maximum
topic alias value declared by the client in CONNECT, while
m_publishAliases is sized according to the maximum value declared
by the server in CONNACK.

The previous fix did not update all related code.
1) The resize() calls for m_receiveAliases and m_publishAliases
still used the wrong properties.
2) The bounds check for m_publishAliases still used the client's
maximumTopicAlias() value instead of the server's.

- Update the resize() calls to use the appropriate connection
properties and fix the bounds check for m_publishAliases.

Amends f8ecf4d56a

Pick-to: 6.11 6.12 6.8
Task-number: QTBUG-149564
Change-Id: I252c67966bf28c6994f34b19024d1b7894748473
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2026-08-28 17:36:29 +00:00
Qt Submodule Update Bot
ee16836877 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I13a69da7a50229cdfc602dda0edac4f2645da59e
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-08-28 16:01:26 +00:00
Tatiana Borisova
c94175ff43 Stop parsing after closeConnection()
- Parsing continued after closeConnection(), leaving the client in the
"connected" state with a dead socket. This led to a permanent,
unrecoverable wedge in Release builds and a crash in Debug builds.

- Check whether the client is already disconnected before changing its
state to BrokerConnected.

Pick-to: 6.11 6.12 6.8
Task-number: QTBUG-149565
Change-Id: I13d45c24d24fe862d9aec6a7e421f5ef4d494db0
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2026-08-28 12:07:32 +00:00
Tatiana Borisova
13288574c1 Check readVariableByteInteger() return value
- On error, readVariableByteInteger() closes the connection and
returns-1. In this case, message handling should stop.

- Add checks for the return value to stop processing when -1 is returned.

Pick-to: 6.11 6.8 6.12
Task-number: QTBUG-149565
Change-Id: I8f6cc8d6f3011a89d3bd4033a3432f383e1e9164
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2026-08-28 12:07:30 +00:00
Tatiana Borisova
ecaf42152e Number overflow while rejecting a too-long length
- The length reader checked its 4-byte limit after doing the maths.
So, a 5th byte was multiplied in and overflows before the value
was thrown away. But it was not noticed, because we thrown it away
and returned -1.

- The fix moves iteration++ and if (iteration > 4) before the
calculation, preventing the overflow.

Pick-to: 6.11 6.8 6.12
Task-number: QTBUG-149571
Change-Id: I78c2063c7e01af3e8f196f824216d31de92fab48
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2026-08-28 12:07:28 +00:00
Qt Submodule Update Bot
ba2b82223a Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Ie3ba332b167426218e86a904bc99a0bed0e4556c
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-08-26 06:34:34 +00:00
Qt Submodule Update Bot
90f2efdd5d Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I45f8e4efaf7d02f0ef886257dd1ccaa1ad4f457e
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-08-22 02:39:59 +00:00
Qt Submodule Update Bot
b73e4d4ffc Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I2751f6696663e560d274e1df7889943a578a6914
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-08-18 00:22:08 +00:00
Tatiana Borisova
96d602b65f Update to coin_module_test_template_v3.yaml
- The main differences between v2 and v3 are:
  * `coin_module_test_template_v2.yaml` ignores autotest return
    codes because the `COIN_CTEST_IGNORE_EXIT_CODE` flag is set.
  * The Axivion build was moved from coin_module_build_template_v2.yaml
    to coin_module_test_template_v3.yaml in commit
    c3ddec2f15a1cf806d8df444952cb2c2231ae4ad
- Switch the qtmqtt submodule to the newer v3 version to improve
the submodule CI experience for autotests and restore Axivion
checks.

Pick-to: 6.12 6.11
Change-Id: I1695c8ca1af616512dff437a0a4cdbd0491412d4
Reviewed-by: Toni Saario <toni.saario@qt.io>
2026-08-17 09:51:21 +00:00
Qt Submodule Update Bot
fe85eff00c Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I49e7ca4073c1c483370a22ff51d8cde8d63345f4
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-08-14 10:49:39 +00:00
Qt Submodule Update Bot
16862e4fa7 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I5706ec8cff106f1a19fcf9652ba06ae7a3076bab
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-08-04 15:26:25 +00:00
Qt Submodule Update Bot
2caa279c61 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I8126f0e67a0c58f8f671890050d3c13bf6e8e8d8
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-07-29 15:25:41 +00:00
Jani Heikkinen
ebd3d87293 Replace Q_ENUMS with Q_ENUM
Amends ea3dc64d3f,
7467bbdc84, and
ea0d792a44 (all before 6.0).

Fixes: QTBUG-148625
Pick-to: 6.12 6.11 6.8
Change-Id: I2f9b24f7e32d437cce258dfdce0d669c8d2638e1
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2026-07-29 11:40:44 +00:00
Tatiana Borisova
14de26f60b Fix Qt-RangeLoopDetach Axivion warnings
- use std::as_const() where possible, and introduce an intermediate
  local const variable where it is not.

Axivion-Id: qt_Add-ons_qtmqtt_dev_linux:SV34
Axivion-Id: qt_Add-ons_qtmqtt_dev_linux:SV35
Axivion-Id: qt_Add-ons_qtmqtt_dev_linux:SV36
Axivion-Id: qt_Add-ons_qtmqtt_dev_linux:SV37
Pick-to: 6.12
Task-number: QTBUG-144762
Change-Id: I7b6d53116269007aca7d6f050b2abeb2515e9390
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2026-07-22 10:41:05 +00:00
Qt Submodule Update Bot
a85b5c3ecf Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I63842312d21575b3cb7f0722446ec14149aa2a5e
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-07-18 21:34:00 +00:00
Qt Submodule Update Bot
2dc7e69f0e Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I23bbd285e1aa00624ee2e21a65b54ec3693d416f
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-07-15 00:24:21 +00:00
Qt Submodule Update Bot
9cc2b3859d Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I8d5b1115587cdc9e4625785a23acba9cd770936a
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-07-09 20:08:18 +00:00
Qt Submodule Update Bot
088b583810 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I92ec408cffa255a953e07fe93761fe9bf5fcc27b
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-07-07 15:18:07 +00:00
Qt Submodule Update Bot
fa9b04ab15 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I2828b08e810e9fd3de8b3536472d21c17c67bf9f
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-07-01 17:52:59 +00:00
Qt Submodule Update Bot
53aba306b9 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I7f19ead9837dcb5a80b0fabae0f3e2aae1562752
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-06-25 07:49:14 +00:00
Qt Submodule Update Bot
3b476b23eb Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Ie71907f1afdf7b36ba1a363db0855716b731d96a
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-06-18 21:00:58 +00:00
Qt Submodule Update Bot
cf66710eb6 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Ibbf482f41eb56bea86a418094a81516fa913ae07
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-06-04 21:59:53 +00:00
Jani Heikkinen
5d592b2aa3 Bump version to 6.13.0
Change-Id: I63790a12e9734c478bb9f0bb86ff4527cd69b9e1
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-06-04 21:59:51 +00:00
Qt Submodule Update Bot
ae08a87fc4 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: If9e34b78b899338e3bf3587caea8f5ef929fa39e
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-06-03 01:35:30 +00:00
Qt Submodule Update Bot
1d7f954339 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I6b6c3fe3edd69ee2444bc7246d1c6916e3f8ba5d
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-06-02 05:06:50 +00:00
Qt Submodule Update Bot
f7267c6452 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Ieff8861b81fe08d9e05eae5343ad6716d7698383
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-05-31 15:44:17 +00:00
Qt Submodule Update Bot
cefbe34e78 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Ieb10ad55da60b7ef62c9d84479fe98f5ea515209
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-05-29 01:11:37 +00:00
Qt Submodule Update Bot
b7d124d65f Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I858f5ccddc5f368659f43646fa005537dce71a87
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-05-25 20:20:43 +00:00
Qt Submodule Update Bot
e7616f09c1 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I77d9159d75ac22b8fff8996dc4e403bc42421563
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-05-22 12:04:27 +00:00
Qt Submodule Update Bot
ba85d5db5c Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I72a5e492509e54a18ee16a953e6a6c222a9aa124
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-05-15 12:13:24 +00:00
Qt Submodule Update Bot
396d0f90e7 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Iefedb03a0bf4aa12a5f13fd36d92a89d5631e685
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-05-08 05:41:49 +00:00
Qt Submodule Update Bot
468dfd5357 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Idcc316e0dea54aeb45941abebab5c4e28a55cd62
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-05-05 14:50:43 +00:00
Marc Mutz
24ec59ffbb Disable 1-to-2-arg qHash() adapter in qtmqtt
Pick-to: 6.11
Task-number: QTBUG-145851
Change-Id: Ic9f6a64b8aa99aad7682e5e6379d304bcff3a7d7
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2026-05-04 10:43:37 +00:00
Qt Submodule Update Bot
c0f5cee7eb Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I421dcdadb5e23c65b453f555a25c3d0f9bba8dd1
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-04-30 13:10:00 +00:00
Kai Köhne
5287cf1442 Add CONTRIBUTING.md file
Point potential contributors to contribute.qt-project.org.

Change-Id: Id4dbc0dda57fe316f5d338dd0ef407b278287671
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2026-04-21 07:22:04 +00:00
Qt Submodule Update Bot
778fa2d33c Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I40d407b8b63b744c47ba731c02e72c66529bb241
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-04-20 19:01:00 +00:00
Qt Submodule Update Bot
92c214f82a Update dependencies on 'dev' in qt/qtmqtt
Change-Id: Ibfb2ad9bb0924abb7a074358c4ba1f877c81c489
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-04-17 18:55:29 +00:00
Qt Submodule Update Bot
ed2aeb5392 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I7483d2540c6338db7b3f8b444cbf05daf07564a8
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-04-16 07:38:06 +00:00
Qt Submodule Update Bot
fe7422c165 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I5dfd827abd2d9fe68403371fd40659ea2e9c459e
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-30 09:25:50 +00:00
Qt Submodule Update Bot
8c32cf60c0 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I9110839ce13a2e73145908973465dd8024d2594c
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-27 08:24:11 +00:00
Qt Submodule Update Bot
92de735434 Update dependencies on 'dev' in qt/qtmqtt
Change-Id: I0fdb37e81eea6ed61cd084b60b6c772d851acc90
Reviewed-by: Qt Submodule Update Bot <qt_submodule_update_bot@qt-project.org>
2026-03-26 08:20:47 +00:00