All notable changes to the AWS IoT Device Client will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Device Client aborts on Red Hat Enterprise Linux ARM
- Device Client crashes due to SIGSEGV on Ubuntu x86
- Device Client crashes on Red Hat Enterprise Linux due to SIGILL
- Support for opening multiple tunnels at the same time
- Handling for secure tunnel OnConnectionShutdown
- Cross compilation toolchains for a number of platforms
- Log sanitization to minimize attack surface and protect against printf vulnerabilities
- Handling for empty json values, local keys and certificates
- Log messaging to indicate permission information to the user
- Ownership validation against required files
- Limitations to log output for Job child processes
- Exponential backoff retry for initial MQTT connection
- Recovery mode for Jobs feature to handle duplicate notifications received after connectivity loss
- Improved logging API startup behavior
- Support for transferring log queues between logger implementations when configuration changes
- README documentation to provide a better getting started experience
- String handling in utility functions to reduce risk of string related security vulnerabilities
- Improved CLI handling for feature enable/disable to maintain parity with .conf JSON file
- Device Client no longer requires presence of a configuration file as long as required values are provided via CLI
- Secure Tunneling SDK 16KB buffering issue. Previous Secure Tunneling implementation would encounter issues if data written to the buffer is larger than 16KB
- Device Defender reboot segfault. There was a known issue where rebooting the device while Device Defender is running as a service would trigger a segfault when the Device Client starts again after the reboot
- CMake build system
- CMake conditional compilation flags for reducing output executable footprint
- CMake support for automatically building the AWS IoT v2 SDK for C++
- Setup script for configuration automation and help installing the AWS IoT Device Client
- Valgrind debugging support added to setup.sh
- Configuration via CLI and JSON file
- Logger with both standard output and file-based logging implementations
- AWS IoT Jobs feature for execution of jobs on the device
- AWS IoT Secure Tunneling feature for establishing secure tunnels to the device
- AWS IoT Device Defender feature for publishing Device Defender metrics to AWS
- AWS IoT Fleet Provisioning feature for device provisioning
- Sample job documents and job handlers for examples of how to use the Jobs feature functionality
- Semantic versioning logic built into the CMake system which pulls information from Git
- Utility classes for operations on files and strings
- Google Test framework added for unit testing
- Doxygen support for building HTML and Latex documentation from source code
- Clang-format support via format-check.sh for verifying code will pass our CI Lint checks