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_SETTINGSis 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_IDto 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_CLIENTis defined. - Added thread logging when
WOLFMQTT_DEBUG_THREADis 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.cwith non-blocking anderrno.h(PR #135) - Fix to not return from
MqttClient_WaitMessageif 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
statfrom own struct, not sharedmsg->stat. - Eliminated use of
client->msgexcept 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_NONBLOCKto 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
fwpushexample to use filename option-f. (PR #117) - Added multiple thread support using
--enable-mtorWOLFMQTT_MULTITHREAD. (PR #115) - Fix for
MQTT_DATA_TYPE_BINARYdata length encoded twice. (PR #112) - Fix to clear local structures for subscribe and unsubscribe ACK's. (PR #112)
- Fix for
SN_Encode_Unsubscribeusing wrong data type for topic name ID. (PR #110) - Add
WOLFSSL_USER_SETTINGSto VS project files. (PR #109) - Fixes for using RTCS in
mqttnet.csocket 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-snorWOLFMQTT_SN). (PR #96) - Added MQTT v5.0 support with (
--enable-mqtt5orWOLFMQTT_V5). (PR #87) - Added property callback support (MQTT v5.0 only). Enabled with
--enable-propcborWOLFMQTT_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_tlswas 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_TLSdefined (PR #78) - Added support for FreeRTOS TCP in wolfMQTT. (PR #58)
- Added
README.mdsection 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_CBor./configure --enable-discb. (PR #69) - Added
WOLFMQTT_LOCALto 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
./configureoptions 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_WaitMessageto use providedtimeout_msarg. With TLS enabled it was using theMqttClient_Initcmd_timeout_msarg. Thanks PeterL for that report. - Fixed cast warnings when building with Visual Studio.
- Cleanup socket code to use existing
SOCK_CLOSEforNetDisconnect. - Cleanup to move the
sockRcinto theMqttTlsstruct, since it only applies when TLS is enabled. - Added configure option to disable error strings for reduced code size (
./configure disable-errorstringsor#define WOLFMQTT_NO_ERROR_STRINGS). - Added support for ChibiOS.
- Fixed non-blocking connect to check for
EINPROGRESSfor 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_STDIOis 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_NONBLOCKis 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->statin 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_WAKEreturn 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-nonblockorWOLFMQTT_NONBLOCK, which uses newMQTT_CODE_CONTINUEresponse code. - Added
scripts/azureiothub.test. - Added
./commit-tests.shfor 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
MQTTCtxstructure 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.mdfor 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.cfromwc_GetErrorStringtowolfSSL_ERR_reason_error_stringso 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.ctxcreation, allowing the callback function to implement its own client method cert verification. - Enhanced
MqttClient_WaitMessageso 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
-Toption for using examples to test. - Added new
-Coption 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_namepointer 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_doneandmsg_newalong with MqttMessagebuffer_posandbuffer_len. - Added example for secure firmware upgrade. Uses the MQTT client library to push a signed payload
fwpushto a broker, then uses another clientfwclientto 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.