Below you will find the wolfMQTT ChangeLog documenting the changes that took place with each release of wolfMQTT since the project’s beginning in 2015.
Version 1.1.0 of wolfMQTT contains bug fixes and new features including:
- 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 to `wolfmqtt/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)
Version 1.0.0 of wolfMQTT contains bug fixes and new features including:
- Fixed `MqttClient_WaitMessage` to use provided `timeout_ms` arg. With TLS enabled it was using the `MqttClient_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` for `NetDisconnect`.
- Cleanup to move the `sockRc` into the `MqttTls` 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.
Version 0.14.0 of wolfMQTT contains bug fixes and new features including:
- 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`.
Version 0.13.0 of wolfMQTT contains bug fixes and new features including:
- 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` (or `WOLFMQTT_NO_TIMEOUT`).
- Added option to disable STDIN/fgets capture for examples using `--disable-stdincap` (or `WOLFMQTT_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).
Version 0.12 of wolfMQTT contains bug fixes and new features including:
- 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.
Version 0.10 of wolfMQTT contains bug fixes and new features including:
- Enabled big endian support.
- Fixes for building with Visual Studio.
Version 0.8 of wolfMQTT contains bug fixes and new features including:
- 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.
Version 0.6 of wolfMQTT contains bug fixes and new features including:
- 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`. See `IDE/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"`
Version 0.4 of wolfMQTT contains bug fixes and new features including:
- 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 new `msg_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".
Version 0.3 of wolfMQTT contains bug fixes and new features including:
- 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` and `msg_new` along with MqttMessage `buffer_pos` and `buffer_len`.
- Added example for secure firmware upgrade. Uses the MQTT client library to push a signed payload `fwpush` to a broker, then uses another client `fwclient` to receive the signed payload and verify its signature using a provided public key.
This is the first release of wolfMQTT.
Please see the README included in the wolfMQTT download for build instructions and API reference.