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.
- Added GitHub CI for Coverity code scan
- Added Integration tests for Device Defender feature
- Added support for publishing MQTT message on file change through Pub-Sub sample
- Device Client aborts on Red Hat Enterprise Linux ARM
- Device Client stability issues when receiving signal interrupts
- Device Client build failure with gcc v11
- Fixed Secure Tunneling feature to gracefully shutdown
- Fixed memory leak in Device Client Pub-Sub sample and Shadow feature
- Fixed reboot job handler
- Device Client fails to start with Fleet Provisioning enabled because of multiple lock files were being created
- Device Client unable to setup secure tunneling while using HTTP proxy
- Support for new runCommand Job type (e.g. "AWS-Run-Command" Managed Job Template) (#359)
- Added cross-compilation support for PowerPC64 and PowerPC64le architectures (#328) (#329)
- New GitHub workflows for building Docker images and publishing to ECR (#328) (#329) (#355)
- Fixed permissions for files created by Device Client (#344) (#303) (#305)
- Refactoring for testability and added unit tests (#275) (#313) (#309) (#317)
- Bug fix caused by promise variable being called more than once during shutdown (#307)
- Bug fix for lock file handler causing Device Client to fail on Amazon Linux Docker images (#332)
- Provisioning with Secure Element (PKCS#11) support. (#272)
- HTTP proxy support. (#290)
- Add
softhsm
in the docker build files. (#267) - Add more unit tests for jobs feature. (#266 #278)
- Add
--version
CLI option. (#280)
- Bump ubuntu version from 16 to 18, fix build issues with gcc 11. (#249)
- Bug fix for segmentation fault caused by empty root CA. Will default to default trust store if empty or invalid root-ca path is provided. (#262)
- The systemd script now have
--config-file
flag with default directory in/etc
. (#259) - Disable device defender by default. (#271)
- Fix cross compilation issue. (#274)
- Fix segmentation fault when closing secure tunnel with null WebSocket. (#276)
- Add check for return code from
wordexp
in implementation ofFileUtils::ExtractExpandedPath
. (#288) - Fixes CLI parsing bug when command is unrecognized. (#289)
- Replace third party clang format action with
clang-format
from CI image. (#291) - Documentation and README updates. (#261)
- Sensor Publish over MQTT feature (#260)
- Modifies download file handler to allow for passing in a directory to store file (#238)
- Prevent multiple processes (#236)
- Upgrade openssl version to 1.1.1n to address CVE-2022-0778 (#228)
- Updated DD code to subscribe & unsubscribe to
/rejected
topic (#224) - Secure tunneling deadlock fix. (#219)
- Bug fix for pub sub creation (#214)
- Device Client bug fixes for (1) reboot action, (2) Docker images and (3) DC versioning (#210)
- Added support for AWS Managed Job Templates aka Standard Job Actions.
- Added validation checks for config file, cli inputs and empty job handler directory.
- Added support for creating PubSub files.
- Added support for enabling SDK logging using SDK and Config file
- Updated documentation for Named Shadow feature and use of thing-name across Device Client
- Updated docker image files to use latest code from SDK's submodule.
- Updated Device Client fatal error messages.
- Added support for Telemetry data.
- Added support for Named Shadow feature in Device Client.
- Resolved high CPU utilization issue.
- Updated SDK version which resolves security vulnerability issue, and issues causing Device Defender and Secure Tunneling failures.
- Added support for storing FP device config from FP Template in runtime-config file
- Support to pass parameters to the AWS IoT Fleet Provisioning RegisterThing MQTT request
- Resolved issue where missing pub sub sample files (publish file and subscribe file) would cause a seg fault
- Resolved issue where pub sub sample lost reference on the Default Publish Payload allocator, publishing a blank string
- Fixed a bug with the pub sub sample CLI config
- SDK logging now configurable via CLI or JSON
- Support for configuring Device Private Key via CLI and JSON for Fleet provisioning using CreateCertificateFromCsr API
- Added Pub/Sub Sample Feature
- Update job to "In Progress" after receive
- Shared Lib builds in Github Actions
- Add CodeDeploy config for integration test setup
- Doxygen Github Actions
- Readme Makeover
- Address cross-platform compatibility for ANSI color codes
- Properly stripping symbols on RELEASE builds
- Updated SDK version to fix shared lib builds
- Broken Doxygen URL in the Readme
- Fix Ubi8 and Al2 Dockerfile Openssl install
- 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