Release 1.19.0 has been developed according to wolfSSL's development and QA process (see link below) and successfully passed the quality criteria. https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance
- Add stress test. by @philljj in #387
- Add cmake CI test and fix pthread detection by @embhorn in #389
- Initial wolfMQTT Espressif ESP32 template and AWS IoT examples by @gojimmypi in #388
- Add curl test dependencies by @lealem47 in #392
- Improving and fixing typos for STM32CUBE build by @lealem47 in #391
- Fix string prop OOB read by @embhorn in #394
- Fix some Helgrind thread errors with enable-tls, and enable-curl. by @philljj in #396
- Initial Espressif CI; limit Zepher CI by @gojimmypi in #390
- Fix double unlock and double lock in multithread example. by @philljj in #397
- Fix double lock of lockRecv. by @philljj in #398
Release 1.18.0 has been developed according to wolfSSL's development and QA process (see link below) and successfully passed the quality criteria. https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance
- Add curl easy socket backend. by @philljj in #380
- WOLFMQTT_EXAMPLE_CERT allowing static or extern cert assignment by @gojimmypi in #354
- Tiny readme cleanup. by @philljj in #381
- Fix high coverity issues by @embhorn in #379
- Add broker check to scripts by @embhorn in #385
- Cmake build fixes by @embhorn in #384
Release 1.17.1 has been developed according to wolfSSL's development and QA process (see link below) and successfully passed the quality criteria. https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance
- Include stdint.h in userio_template.h by @lealem47 in #371
- Improvements to multithread locking and tests. by @dgarske in #369
- Cleanup executable status on src files. by @philljj in #372
- Close socket on error in NetConnect by @embhorn in #375
- Fixes for non-blocking with larger payload and improvements to the test and examples by @dgarske in #373
- Add MQTT-SN CI tests by @embhorn in #376
- Fix Wild read in MqttProps_Free by @embhorn in #377
- Fix fuzzer issues in MqttDecode_Props by @embhorn in #378
Release 1.17.0 has been developed according to wolfSSL's development and QA process (see link below) and successfully passed the quality criteria. https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance
- Fix for declaration after executable block by @lealem47 in #341
- Add QNX IDE, Makefile, and remove source code exec bit by @JacobBarthelmeh in #317
- update for cmake after wolfssl added NAMESPACE by @JacobBarthelmeh in #343
- Add mutex protection to MqttClient_NetDisconnect by @embhorn in #342
- Add DTLS support to MQTT-SN client by @embhorn in #348
- Tie zephyr tests to a release by @julek-wolfssl in #350
- add documentation link to README by @gojimmypi in #355
- Possible patch for POSIX conditional wait issue by @dgarske in #356
- Fix publish with topic ID >=127 by @embhorn in #351
- Adding publish and subscribe atomic client examples by @embhorn in #347
- Allow disabling the posix conditional signal by @dgarske in #360
- Exclude CI tests with external brokers by @embhorn in #362
- Improvements for client property stack by @dgarske in #361
- Add mosquitto to CI tests by @embhorn in #365
- Fixes for non-blocking edge cases by @dgarske in #363
- Refactor MQTT-SN code by @embhorn in #366
- Add testing for TLS mutual auth, and fsanitize gh test by @lealem47 in #321
- Add support for pkcs8 keys to mqtt client by @lealem47 in #322
- Fix null ptr deref in MqttClient_WaitType by @embhorn in #323
- Cleanup enum last entry to not have comma by @dgarske in #324
- Cleanup the AWS example by @dgarske in #326
- Fix for multi-threaded non-blocking use of sockRc, which could collide between read and write by @dgarske in #328
- Add API to check if message is active (non-blocking only) by @dgarske in #329
- Fix configure warnings by @embhorn in #330
- Support MQTTv5 in AWS example by @embhorn in #332
- Zephyr port by @julek-wolfssl in #333
- Improve example headers and small sanitizer fixes by @lealem47 in #334
- Adding in STM32CubeIDE support by @lealem47 in #335
- Add dynamic property support by @embhorn in #336
- Fix to protect read from client->write.len, which resolve edge case issue when using multi-threading. (PR #318 and PR #319)
- Fix for --with-libwolfssl-prefix config option #312
- Call disconn CB with MQTTv5 reason code #314
- Add github CIFuzz action by @DavidKorczynski #315
- Fix SN disconnect with sleep should not use CB #294
- Fix cmake builds #307
- Fix for Vcpkg on Windows not getting wolfssl/options.h included #305
- Support post-quantum KYBER_LEVEL1 and P256_KYBER_LEVEL1 with FALCON_LEVEL1 in wolfMQTT. by @anhu #300
- Add WOLFMQTT_USE_CB_ON_DISCONNECT for CB on client disconnect by @embhorn in #302
- Fix to release connect ack props by @embhorn in #301
- Fix windows build test by @lealem47 in #286
- Add async support for wolfMQTT by @dgarske in #285
- Allow message callback to set reason code for response by @embhorn in #287
- Porting WolfMQTT to NUCLEO F767ZI with TOPPERS OS by @nekoman2187 in #254
- Fixes for non-blocking state and large payload by @dgarske in #288
- Add CMake support build by @elms in #292
- Fix for improper reset of shared object by @dgarske in #291
- cmake: add example option and fixes for vcpkg by @elms in #293
- cmake: shared/static lib build and cleanup by @elms in #295
- Fix example msg cb print error @embhorn in #298
- Allow MqttClient_WaitType to return MQTT_CODE_CONTINUE with MT (PR #283)
- Fix decoding user property and add example (PR #282)
- Fix issue with MqttClient_Publish_WriteOnly not waiting properly for ACK (PR #281)
- Fix MQTTv5 disconnect with props (PR #279)
- Add new publish write only API for multi-threading (PR #277)
- Fix for multithreaded cancel (PR #276)
- MQTT-SN Add disconnect_cb when disconnect recv from broker; Fix PUB ACK return status handling (PR #274)
- Enable TLS1.3 in examples (PR #273)
- Adding windows github actions build test (PR #272)
-
Return correct error code in SN_Client_Connect (PR #268)
-
Removing unsupported TLS and SNI options in sn-client (PR #266)
-
Fixes for multithreading with non-blocking (PR #252)
-
Doxygen work removing depreciated command and fixing other warnings (PR #264)
-
Fix overwriting TLS error in connect (PR #259)
-
Add GitHub Actions (PR #256 #260 #263)
-
Fix wm_Sem on Windows (PR #255 #261)
-
Fix scripts for host without mosquitto (PR #257 #265)
-
Trim whitespace and convert tab to spaces (PR #251)
-
Refactor of write length (PR #250)
-
Fixes for publish edge cases (PR #248)
-
Remove unused sub_id element, add support for local test broker (PR #249)
-
Fix to make sure MqttClient_DecodePacket called in all cases (PR #246)
-
Known bug with multithread and without nonblocking enabled in this release.
- Improve FALL_THROUGH macro logic for XC32. (PR #227)
- Fix potential NULL printf in MqttSocket_Connect with verbose debug enabled. (PR #229)
- Fix non-block chunked transfer. (PR #230)
- Fix QoS responses (PR #231, 240)
- Fix MQTTv5 property handling (PR #232, 233, 234, 236, 238, 241)
- Fix fuzzing test issues (PR #242)
- Fixes for Sensor Network client (PR #204, 214, 219)
- Fixes for non-blocking (PR #205)
- Fixes for multithread (PR #207, 209, 211, 218)
- Fix for MQTTv5 publish response handling (PR #224, 220)
- Fix subscribe return code list (PR #210)
- Fix switch statement fallthrough on other toolchains (PR #225)
- Add HiveMQ Cloud capability with SNI feature (PR #222)
- Add ability to publish files from example client, fix chunked publish (PR# 223)
- Fixes for non-blocking in WIN32 and large payload (PR #202)
- Make TLS IO callback functions public (PR #201)
- Bug fixes (PR #186, 188, 189, 193, 196, 199, 200)
- Update default test broker (PR #194)
- MQTT-SN fixes for multithread and register topic name (PR #185, 190)
- Fix multi-thread to use pthread mutex with condition (PR #183)
- Fix for WIN thread create macro (PR #182)
- Use options.h with Arduino build (PR #181)
- Use MqttClient_Ping_ex instead of MqttClient_Ping in examples (PR #179)
- Fixes for building with MinGW (PR #178)
- MQTT-SN support for multithread (PR #176)
- TLS mutual auth in client examples (PR #175)
- MQTT-SN feature enhancements (PR #173)
- Add runtime message option to client (PR #171)
- Fix for publish with short topic name and example. (PR #169)
- Add MqttProps_ShutDown(). Fix MqttProp leaks(PR #167)
- Multithread fixes. (PR #166)
- Fix buffer overrun in strcpy(). Fix logic around getaddrinfo(). (PR #165)
- Fix MqttClient_WaitType for nonblock mode. (PR #164)
- Change anon union for ARMv6 error. (PR #163)
- Fix for publish large payload. (PR #162)
- Fixing LWT prop and allow null LWT. (PR #161)
- Fix for receive timeout in mqttsimple example. (PR #158)
- Fixes to improve buffer size checking when using a small tx or rx buffer. (PR #137)
- Fix for MQTT v5 issue with using wrong property free. (PR #152)
- Refactor of the thread locking to use binary semaphore, which resolves issue with thread synchronization. (PR #146)
- Improved multi-thread example exit (ctrl+c). Use internal pipe to wake "select()" and use semaphore signal to "wake" ping thread. (PR #146)
- Adjust multi-threading use case to use separate thread for ping keep-alive. (PR #146)
- Added simple standalone MQTT client example. (PR #138)
- Added include for "user_settings.h" when
WOLFMQTT_USER_SETTINGS
is defined. (PR #138) - Added broker compatibility list (PR #145)
- Added protocol version API's. (PR #152)
- Added multithread example for Windows and Visual Studio. (PR #146)
- Made protocol level a run time option (PR #147)
- Remove obsolete "sched_yield" call. (PR #146)
- Remove deprecated call to
wolfSSL_set_using_nonblock()
(PR #148) - Sync automake fixes from wolfSSL to wolfMQTT. (PR #150)
- Moved
MAX_PACKET_ID
to library. (PR #138)
- Fixes for non-blocking and multi-threading edge cases. (PR #130)
- Improved logic for processing objects from different threads.
- Improved network connect/read to handle runtime option for block/non-block.
- Improved examples to support adding random hex string to client_id and topic name when "-T" option is used.
- Fix for test scripts to check non-zero return code.
- Enabled the mqttclient, multithread and wiot examples when non-blocking is enabled.
- Added encode debug log messages when
WOLFMQTT_DEBUG_CLIENT
is defined. - Added thread logging when
WOLFMQTT_DEBUG_THREAD
is defined with multi-threading support enabled.
- Fixes for Visual Studio project (PR #122)
- Improvements to catch use of socket file descriptor before its been created/opened.
- Improved handling for Windows socket want write.
- Added library references to wolfSSL project.
- Adjusted include to have IDE/WIN for user_settings.h.
- Fixes for Visual Studio conversion warning (PR #128)
- Fix visibility warnings in Cygwin (PR #127)
- Fix global declaration conflicts for CentOS (PR #133)
- Fix Microchip Harmony for
mqtt_socket.c
with non-blocking anderrno.h
(PR #135) - Fix to not return from
MqttClient_WaitMessage
if response from another thread (PR #129) - Refactor of the multi-threading code to better handle edge case and state for non-blocking (PR #126)
- Fixes for multi-thread handling of ack's when processing.
- Refactor to use
stat
from own struct, not sharedmsg->stat
. - Eliminated use of
client->msg
except forMqttClient_WaitMessage
. - Fixes to restore "state" after performing MqttClient operation.
- Refactor of publish read and write payload.
- Improvements to multithread example.
- Refactor of the SN code to support new object type and unique state for future multi-thread support.
- Added build option
TEST_NONBLOCK
to force testing non-blocking edge cases. - Fix for fwpush getting stuck in stop loop on Ctrl+c exit.
- Update Azure login and default broker (PR #131)
- Fix
fwpush
example to use filename option-f
. (PR #117) - Added multiple thread support using
--enable-mt
orWOLFMQTT_MULTITHREAD
. (PR #115) - Fix for
MQTT_DATA_TYPE_BINARY
data length encoded twice. (PR #112) - Fix to clear local structures for subscribe and unsubscribe ACK's. (PR #112)
- Fix for
SN_Encode_Unsubscribe
using wrong data type for topic name ID. (PR #110) - Add
WOLFSSL_USER_SETTINGS
to VS project files. (PR #109) - Fixes for using RTCS in
mqttnet.c
socket example code. (PR #108) - Fix MQTT-SN decode publish parsing and QoS2 response. (PR #107)
- Make MqttSocket_TlsSocket callbacks public. (PR #104)
- Improved the disconnect network error callback example. (PR #102)
- Add MQTT context information to socket callback examples. (PR #101)
- Initialize subscribe state to
MQTT_MSG_BEGIN
. (PR #99) - Fix for Harmony possible circular include issue. (PR #98)
- Added MQTT Sensor Network (SN) client support (
--enable-sn
orWOLFMQTT_SN
). (PR #96) - Added MQTT v5.0 support with (
--enable-mqtt5
orWOLFMQTT_V5
). (PR #87) - Added property callback support (MQTT v5.0 only). Enabled with
--enable-propcb
orWOLFMQTT_PROPERTY_CB
). (PR #87) - Fix for Harmony NetConnect function incorrectly checking
EWOULDBLOCK
. Fixes issue #88. (PR #89) - Fix to reset the TLS ctx and ssl pointers when they have been free'd. (PR #85)
- Add way to pass custom context to the wolfMQTT TLS verify callback example
mqtt_tls_verify_cb
. PR #94) - Create nonblocking mqttclient example
./examples/nbclient/nbclient
. (PR #93) - Add support for publishing in smaller chunks using new API
MqttClient_Publish_ex
. (PR #92) - Added simplified Microchip Harmony wolfMQTT network callback example. (PR #83)
- Fixed case when
use_tls
was requested but TLS feature not compiled in. (PR #57) - Fixed non-blocking issue that caused out of buffer error if not all of packet were received. (PR #65)
- Fixed non-blocking mode issue that was sending multiple connect requests for examples. (PR #65)
- Fixed non-blocking issue with ping keep alive in examples. (PR #68)
- Fixed the Arduino example with
ENABLE_MQTT_TLS
defined (PR #78) - Added support for FreeRTOS TCP in wolfMQTT. (PR #58)
- Added
README.md
section for building wolfMQTT. (PR #63) - Added new option to enable verbose logging
./configure --enable-debug=verbose
. (PR #65) - Added support for disconnect callback using
WOLFMQTT_DISCONNECT_CB
or./configure --enable-discb
. (PR #69) - Added
WOLFMQTT_LOCAL
to internal API's for hidden visibility. (PR #73) - Added include for
wolfmqtt/options.h
. (PR #79) - Added IBM Watson IoT example (see
./examples/wiot/wiot
). (PR #80) - Updated the autoconf M4 files and added generation of
./configure
options towolfmqtt/options.h
. (PR #71) - Improved the message callback to support a custom context per message. (PR #62)
- Improved the non-blocking unsubscribe handling in mqttclient example for timeout. (PR #65)
- Fixed
MqttClient_WaitMessage
to use providedtimeout_ms
arg. With TLS enabled it was using theMqttClient_Init
cmd_timeout_ms
arg. Thanks PeterL for that report. - Fixed cast warnings when building with Visual Studio.
- Cleanup socket code to use existing
SOCK_CLOSE
forNetDisconnect
. - Cleanup to move the
sockRc
into theMqttTls
struct, since it only applies when TLS is enabled. - Added configure option to disable error strings for reduced code size (
./configure disable-errorstrings
or#define WOLFMQTT_NO_ERROR_STRINGS
). - Added support for ChibiOS.
- Fixed non-blocking connect to check for
EINPROGRESS
for all platforms (not just Harmony). - Fixed buffer overflow position check on read/write.
- Fixed typo on internal packet function
MqttDecode_ConnectAck
. - Fixed the socket close for Harmony to use
closesocket
. - Fixed non-blocking connect where
WOLFMQTT_NO_STDIO
is defined. - Fixed GCC 7's new fall-through check.
- Added check for EAGAIN in non-blocking mode (was only EWOULDBLOCK).
- Added non-blocking support for write operations when
WOLFMQTT_NONBLOCK
is defined. - Added support for DH and setting the default minimum key bits.
- Added support for keep-alive ping when using non-blocking mode.
- Improvements to example TLS callback handling of return code failures.
- Improvements and fixes to Visual Studio projects.
- Enhancement to adjust wolfSSL options.h include based on
WOLFSSL_USER_SETTINGS
.
- Fixed issue with
msg->stat
in non-blocking. - Fixed Arduino library build.
- Fixed examples with non-blocking (--enable-nonblock).
- Enhancement to pass network callback return codes through context when using TLS.
- Added option to disable the blocking timeouts for
select()
using--disable-timeout
(orWOLFMQTT_NO_TIMEOUT
). - Added option to disable STDIN/fgets capture for examples using
--disable-stdincap
(orWOLFMQTT_NO_STDIN_CAP
) - Refactor to use new
MQTT_CODE_STDIN_WAKE
return code for examples using STDIN to send publish messages (normal blocking mode only).
- Fixes issue with read timeout in non-blocking mode with TLS enabled being teated as socket error.
- Fixed issue with “msg->stat” not getting reset on failure or timeout.
- Fix to not link libwolfssl with ./configure --disable-tls.
- Added AWS IoT Example and test script.
- Fix for building MQTT client example without the wolfSSL headers present.
- Fix for Microchip Harmony IP check so it works with non 192 subnets.
- Enabled big endian support.
- Fixes for building with Visual Studio.
- Added Microchip Harmony support (see new readme in
IDE/Microchip-Harmony/README.md
). - Added non-blocking mode
--enable-nonblock
orWOLFMQTT_NONBLOCK
, which uses newMQTT_CODE_CONTINUE
response code. - Added
scripts/azureiothub.test
. - Added
./commit-tests.sh
for testing all configurations. - Added git pre-commit hook to run
commit-tests.sh
. - Combined duplicate code in the examples into
examples/mqttexample.c
. - Examples now use
MQTTCtx
structure as argument for tracking info/state.
- Fixed stdin capture bug and improved signal (ctrl+c) handling.
- Added Azure IoT hub MQTT client example.
- Added support for MQX / RTCS.
- Added "--disable-tls" and "--disable-examples" configure options.
- Added comment about max packet size.
- Added example for how to load a client certificate to mqttclient example.
- Added return code for firmware and azure examples that are not compiled in due to older / incompatible version of wolfSSL.
- Moved the support for custom printf/line endings into the mqtt_types.h for use throughout the project.
- Updated README.md with information about the examples.
- Fixes to support MinGW compiler.
- Fixed bug with include of the wolfSSL include of options.h.
- Fix to properly handle negative return code from wc_SignatureGetSize.
- Added Arduino IDE example in
IDE/ARDUINO
. SeeIDE/ARDUINOREADME.md
for details. - Added example UART interface for wolfMQTT. See
examples/mqttuart.c
. - Added the ability to pass additional arguments to the scripts. Example:
./scripts/client.test "-h localhost"
- Fixed build error when using older wolfSSL in firmware examples.
- Updated the get error string function in
mqtt_socket.c
fromwc_GetErrorString
towolfSSL_ERR_reason_error_string
so both wolfSSL and wolfCrypt error codes are resolved. - Added
-n <str>
option so a custom topic name can be used. - The mqttclient example now listens to stdin and will send a publish message with the data entered on the console when end-of-line (return) is detected (Linux only).
- Added keep-alive ping to the mqttclient and fwclient examples.
- Moved the TLS callback prior to the
client->tls.ctx
creation, allowing the callback function to implement its own client method cert verification. - Enhanced
MqttClient_WaitMessage
so it will return if we get a message, not just on timeout - Added make check/test scripts (scripts/client.test and scripts/firmware.test) to validate client TLS (with and without) plus QoS 0-2 levels and the firmware update example.
- Adjusted the example include paths for more flexibility.
- Added new
-T
option for using examples to test. - Added new
-C
option to allow custom command timeout. - Combined duplicate example code into new header
mqttexample.h
. - Added a PRINTF helper macro to the examples for easier porting.
- Added better error trapping in examples so return code is populated for testing.
- Changed the example test functions to return int.
- Fixed bug with subscribe not populating acknowledgment return code(s) properly.
- Fixed build error if using wolfSSL 3.7.1 or older due to missing signature.c/.h wrappers. This fix disables the firmware examples if the wolfSSL version isn't greater than 3.7.1.
- Fix to ensure
topic_name
pointer is reset when publish callback message is not newmsg_new = 0
. - Fixes to suppress possible warning "Value stored to [] is never read".
- Fixed firmware example to trap case where file isn't found.
- Fixed possible ./autogen.sh error with missing "config.rpath".
- Fixed Windows issue with SetConsoleCtrlHandler incorrectly reporting error.
- Fixed issue with Visual Studio 2015 wolfssl.lib reference.
- Fixed build errors with G++ (./configure CC=g++).
- Fixed "FirmwareHeader" to use WOLFMQTT_PACK macro.
- Added helper macro's and comments for topic names/filters.
- Added TLS certification verification reference implementation to examples.
- Updated the topic names in examples to use "wolfMQTT/example/".
- Added QoS level to example console output.
- Added memset to initialize some of the example stack variables.
- Removed the LWT from the firmware examples.
- Added retain flag "-r" option on the "fwpush" example.
- Updated the examples to use macros for all memory and string functions, so they are more portable.
- Added Visual Studio projects for "fwpush" and "fwclient".
- Fixes bug with first byte of payload being null'd if QoS level was 0.
- Fixed issue with stdint types (uint#_t) being used.
- Fixes for remaining length encoding/decoding for large packets.
- Added support for large payloads using new message callback flags
msg_done
andmsg_new
along with MqttMessagebuffer_pos
andbuffer_len
. - Added example for secure firmware upgrade. Uses the MQTT client library to push a signed payload
fwpush
to a broker, then uses another clientfwclient
to receive the signed payload and verify its signature using a provided public key.
- Fixes to handle receival of publish and QoS messages while performing packet writes/waits.
- Added support / tested with Windows.
- Added Visual Studio 2015 solution and projects.
- Added support / tested with FreeRTOS and Lwip.
- Fixes for compiler warnings.
- Initial release with support for MQTT v3.1.1, QoS 0-2, TLS and example client.