- Added a check to verify properties in incoming SUBACK/UNSUBACK packets do not overflow the bounds of the packet itself.
- Minor fixes in logging formatting to allow builds without warnings on a 32-bit system.
- Added MQTT v5.0 protocol support including properties, enhanced reason codes, bidirectional DISCONNECT, and subscription options.
- New property builder API (
MQTTPropBuilder_t) withMQTTPropAdd_*andMQTTPropGet_*functions. - Updated
MQTT_Connect,MQTT_Subscribe,MQTT_Publish,MQTT_Unsubscribe, andMQTT_DisconnectAPIs with optional property parameters. - Updated
MQTTEventCallback_tsignature to returnbooland include reason code and property parameters. - Updated
MQTT_InitStatefulQoSwith ACK properties buffer support. - Added
MQTTConnectionProperties_tfor server-negotiated connection properties. - Added
MQTTSubscribeInfo_tsubscription options:noLocalOption,retainAsPublishedOption,retainHandlingOption. - Added
MQTTSuccessFailReasonCode_tenum for all MQTT v5.0 reason codes. - Added
maxPacketSizeenforcement in packet size calculation APIs. - All new parameters are optional (pass
NULL/0) for backward-compatible usage.
- #297 Update release action for version number update and verification.
- #288 Fix time comparison overflow.
- #283 Fix build error with Werror=sign-compare is enabled.
- #279 Add documentation about timer behavior when it overflows.
- #275 Correct TransportRecv_t documentation.
- #268 Typecast outgoing and incoming publish count to unsigned longs to match format specifier.
- #255 Fix MQTT_Status_strerror to return correct error on NeedMoreBytes error.
- #252 Fix sending empty strings in MQTT packets.
- #258 Fix race condition in handleKeepAlive.
- #250 Fix timeout calculation in sendVector function to account for overflow.
- #249 Replace magic numbers with macros and add explaining comments.
- #235 Fix to update the timestamp of the last packet received.
- #224 Update timeout duration to be constant for all transmit functions. Timeout shall occur if the whole packet is not sent within the configured timeout value.
- #225 Updated the documentation of ReceiveLoop and ProcessLoop.
- #223 Modify a check to make sure that keep alive is sent even when data is in the buffer.
- #221 Remove LWT payload non-zero restriction.
- #219 Fix MISRA deviations in the source.
- #218 Fix bugs in receiveSingleIteration and optimize sendMessageVector.
- #213 Fix MISRA deviations in the source.
- #200 Add hooks to the code.
- #205 Update logging and add MQTT_InitStatefulQoS to prevent log leaks.
- #199 Make use of user provided buffer only for packet reception. Stack space will be used for sending packets.
- #198 Remove timeout from MQTT_ProcessLoop and MQTT_ReceiveLoop and make the implementations non-blocking.
- #196 Add a cancel callback API to cancel sent publish packets.
- #191 Generate PINGREQ packets on idle input or output.
- #175 Change levels of some logs.
- #174 Fix warnings for some compiler options.
- #148 Update doxygen version used for documentation to 1.9.2.
- #168 Add header guards for C++ linkage.
- #163 Fix bug to check for ping responses within
MQTT_PINGRESP_TIMEOUT_MSinstead of the entire keep alive interval. - #159 Add more checks for malformed packets when deserializing acknowledgments.
- #118 Use the
stdbool.hheader file instead of using preprocessor checks for whenboolis not defined. This also providesstdbool.readmeandstdint.readmefiles in the case that a non-C99 compiler does not provide the respective header. - #120 Introduce a
MQTT_RECV_POLLING_TIMEOUT_MSconfiguration macro to control the timeout for retrying zero byte network read operations. Previously, network read attempts were controlled by a runtime timeout parameter, which could result in a premature timeout even when data could still be read. Now, reads will wait for at least the macro timeout value before returning error. Conversely, the macro timeout value is now the maximum duration during which no data may be received, regardless of the timeout passed at runtime. - #124, #127, Introduce a
MQTT_SEND_RETRY_TIMEOUT_MSconfiguration macro to control the similar case of retrying zero byte transport send operations. - #139 Add a parameter check for empty topic filters in SUBSCRIBE and UNSUBSCRIBE packets.
- #107, #109, #121 Improve continuous integration checks.
- #110 Rename the master branch to main.
- #113, #116, #117, #125 Update logging and cast to C standard types for logs.
- #115, #122, #128, #132, #133, #136, #138 Minor documentation updates.
- #83 Accept duplicate publishes regardless of the value of the "DUP" flag.
- #86 Remove
constqualifier from transport interface function pointers. - #91
transport_interface.hwas moved to theinterface/directory.
- #69, #80, #95, #98 Minor documentation updates.
- #71 Set publish payloads to NULL when they are zero length.
- #74 Resolve clang build warnings from the unit tests.
- #75 Configure submodules to not be cloned by default.
This is the first release of a coreMQTT client library in this repository.
The MQTT library is a client-side implementation that is compliant with the MQTT 3.1.1 specification. It is optimized for resource-constrained devices, and does not allocate any memory.