Skip to content

Releases: AVSystem/Anjay

Anjay 3.3.1

10 Mar 13:17
Compare
Choose a tag to compare

Improvements

  • anjay_disable_server() and anjay_disable_server_with_timeout() can now be
    be called on servers that are not enabled as well

Bugfixes

  • Fixed resetting of counter for the Communication Sequence Retry Count resource
  • Fixed a regression in 3.2.0 that prevented the bootstrap connection to be
    properly closed if the Bootstrap Server is reconfigured in the new bootstrap
    information and legacy Server-Initiated Bootstrap is disabled

Anjay 3.3.0

21 Feb 09:41
Compare
Choose a tag to compare

Features

  • New configuration option, WITHOUT_MODULE_fw_update_PUSH_MODE (CMake) / ANJAY_WITHOUT_MODULE_FW_UPDATE_PUSH_MODE (header), that allows disabling support for the PUSH mode in the Firmware Update module

Improvements

  • Refactored tests to use avs_stream_inbuf instead of avs_unit_memstream
  • Refactored anjay_input_ctx_constructor_t to use only a single pointer for input stream
  • Revised support for DTLS Connection ID extension, so that a new handshake is
    not performed if Connection ID is used, unless an error occurs
  • Revised example Anjay configurations for embedded builds without CMake to
    optimize compile time and code size

Bugfixes

  • Fixed a critical regression in 3.2.0 that could cause an assertion failure and use-after-free during Bootstrap Finish if the Bootstrap Server is reconfigured in the new bootstrap information and legacy Server-Initiated Bootstrap is disabled
  • Fixed a bug that could cause undefined behavior when reading the Update Delivery Method resource in the Firmware Update object with thread safety enabled but Downloader disabled
  • Fixed a bug that prevented notifications from being sent in a timely manner after receiving Reset message cancelling an Observation in response to another confirmable notification
  • Fixed a bug that could cause an assertion failure when using anjay_delete_with_core_persistence() if a primary server connection failed, but a trigger (SMS) connection is operational
  • Fixed the response code of unsuccessful Resource /1/x/9 Bootstrap-Request Trigger execution (e.g. when there is no Bootstrap-Server Account)

Anjay 3.2.1

13 Dec 09:04
Compare
Choose a tag to compare

Improvements

  • Added some missing log messages for potential scheduler errors
  • Updated the version of pybind11 used by integration tests to 2.10.1

Bugfixes

  • Fixed a regression in 3.2.0 that caused some invalid Writes to be silently ignored without responding with proper error codes
  • Fixed compatibility of integration tests with Python 3.11 and the current Github macOS environment

Anjay 3.2.0

07 Dec 20:54
Compare
Choose a tag to compare

BREAKING CHANGES

  • Observations are now implicitly canceled when the client's endpoint identity changes (i.e., when the socket is reconnected without a successful DTLS session resumption). This is in line with RFC 7641 and LwM2M TS requirements (see Core 6.4.1 and Transport 6.4.3), but may break compatibility with some non-well-behaved servers.

Features

  • New APIs to access information about the last registration time, next registration update time and last communication with a server time
  • Expanded anjay_resource_observation_status_t structure so that now anjay_resource_observation_status() returns also the number of servers that observe the given Resource (capped at newly introduced ANJAY_MAX_OBSERVATION_SERVERS_REPORTED_NUMBER) and their SSIDs

Improvements

  • Migrated GitHub Actions tests from Fedora-36 to RockyLinux-9
  • Added compilation flag to enforce Content-Format in Send messages.
  • Refactored Firmware Update notification handling and simplified internal module support
  • Removed the usage of symbolic links between Python packages to make them usable on Windows
  • Key generation in the factory provisioning script has been rewritten to use the cryptography Python module instead of pyOpenSSL
  • Factory provisioning script now uses elliptic curve cryptography by default in certificate mode
  • anjay_next_planned_lifecycle_operation() and anjay_transport_next_planned_lifecycle_operation() now properly respect jobs that have been scheduled manually (e.g. anjay_schedule_registration_update())

Bugfixes

  • Fixed a bug that could cause some resources in a Write message to be ignored when they follow a Multiple-Instance Resource entry
  • Fixed semantics of Resources 19 and 20 in the Server object, which were mistakenly swapped
    • NOTE: The persistence format for the Server object has been reinterpreted so that Resources 19 and 20 remain where they were, without taking semantics into account. This will fix configurations provisioned by Servers but may break configuration persisted just after initially configuring it from code.
  • Made sure that anjay_schedule_registration_update() forces a single Update request even when followed by anjay_transport_schedule_reconnect() or a change of offline mode
  • Made sure that notifications are not sent before the Update operation if one has been scheduled
  • Made sure that anjay_transport_schedule_reconnect() properly reconnects the Bootstrap server connection in all cases
  • Made sure that the socket is properly closed when queue mode is enabled, including previously missing cases related to the Send operation and when no CoAP message needs to be sent at all
  • Refactored asynchronous server connection management to avoid race conditions that could lead to required actions (e.g. EST requests) not being performed when the calculated delays were not big enough

Anjay 3.1.2

24 Aug 11:45
Compare
Choose a tag to compare

Improvements

  • Reduced code size of the Security object implementation
  • Updated documentation, readme and examples to mention the new EU IoT Cloud platform
  • Migrated GitHub Actions tests to ubuntu-18.04, ubuntu-20.04, ubuntu-22.04, fedora-36 and macos-11

Bugfixes

  • Fixed various compilation warnings
  • Fixed dangerous usage of avs_realloc() in the event loop implementation

Anjay 3.1.1

22 Jul 13:17
Compare
Choose a tag to compare

Improvements

  • Added CHANGELOG.md

Bugfixes

  • Added the missing return in anjay_dm_handlers.c that could cause undefined behavior when ANJAY_WITH_THREAD_SAFETY was disabled
  • Removed the unused option in the factory provisioning script
  • Removed usage of Python 3.6 syntax in tests that caused Github Actions tests to fail
  • Added missing notes about the change to (D)TLS version in all migration guides in the documentation
  • (commercial feature only) Fixed proper handling of changing the disable_legacy_server_initiated_bootstrap across core persistence cycles

Anjay 3.1.0

06 Jul 16:12
Compare
Choose a tag to compare

BREAKING CHANGES

Note: the following changes, while technically breaking, are minor, and should not cause problems in most pratical usages. See also: https://avsystem.github.io/Anjay-doc/Migrating/MigratingFromAnjay30.html

  • Changed error handling semantics of anjay_attr_storage_restore() to match other persistence restore functions
  • TLS 1.2 is no longer implicitly set as the default (D)TLS version; the underlying crypto library's default is now used

Features

  • Factory provisioning feature that allows to perform "Factory bootstrap" based on SenML CBOR data stream
  • New API: anjay_access_control_set_owner(), allowing to set Owner resource in the Access Control object during the "Factory bootstrap" phase
  • New APIs for changing the CoAP transmission parameters, CoAP exchange timeout and DTLS handshake timeouts while the library is running

Improvements

  • Migrated the Observe/Notify subsystem to use the new AVS_SORTED_SET API from avs_commons; this means that avs_rbtree can be disabled, in which case a more lightweight list-based implementation will be used
  • Minor code size optimizations in the Server object implementation
  • Added documentation for the OSCORE commercial feature
  • (D)TLS version can now be set from command line in the demo application

Bugfixes

  • Fixed a bug in anjay_ongoing_registration_exists() that could cause it to always return true if disable_legacy_server_initiated_bootstrap is set to true
  • Fixed improper formatting of the payload describing the data model in the Register message during initial negotiation of the LwM2M version
  • Fixed handling of persistence format versioning for the Security object, that could cause crashes if Anjay was compiled without LwM2M 1.1 support
  • Changed the "Bootstrap on Registration Failure" resource in the Server object to be readable, as specified in LwM2M TS 1.2
  • (commercial feature only) Added persistence of runtime LwM2M version in the core persistence feature; previously the client could erroneously use a different LwM2M version than it registered with after core persistence restore

Anjay 3.0.0

18 May 15:45
Compare
Choose a tag to compare
BREAKING CHANGES:
- Changed license of the free version to AVSystem-5-clause
- Refactored the attr_storage module as a core feature
  - Names of the relevant CMake options and configuration macros have changed
  - anjay_attr_storage_install() has been removed; Attribute Storage is now
    always installed if enabled at compilation time
  - Behavior of anjay_attr_storage_restore() has been changed - this function
    now fails if supplied source stream is empty
- The "con" attribute is now included in anjay_dm_oi_attributes_t, as it has
  been standardized for LwM2M TS 1.2
- Refactored public headers to consistently use conditional compilation; APIs
  for disabled features are no longer accessible
- Removed previously deprecated APIs
- avs_commons 5.0 refactor the API for providing PSK credentials. Please refer
  to the change log there, or the document below for details:
  https://avsystem.github.io/Anjay-doc/Migrating/MigratingFromAnjay215.html

Features:
- LwM2M TS 1.1 support and related features are now available in the open source
  version; the features include:
  - Support for TCP binding
  - Support for SenML JSON, SenML CBOR and raw CBOR content formats
  - Support for the Send operation
  - Possibility for automatically moving security credentials provisioned by the
    Bootstrap Server or the bootstrapper module onto hardware security engines
    (note: no hardware security engine implementation is provided in the open
    source version)
- Security credentials provisioned by the Bootstrap server or bootstrapper
  module and automatically moved onto hardware security engine can now be marked
  as "permanent" to prevent them from being removed
- (commercial feature only) Experimental support for some LwM2M TS 1.2 features

Improvements:
- Refactored incoming message handling to make use of the
  AVS_NET_SOCKET_HAS_BUFFERED_DATA feature added in avs_commons 5.0
- Refactored and simplified internal flow of calling data model handlers
- Refactored internal handling of communication state
- Commercial features are now available for separate inclusion, described in the
  documentation more clearly and feature code examples
- Various improvements in the documentation

Bugfixes:
- Fixed some uninitialized variables in IPSO object implementations
- Fixed some compilation warnings in unit tests
- Fixed compatibility of integration tests with OpenSSL 3
- Fixed socket flag handling in tests that were breaking with some versions of
  Python
- Fixed some obsolete information in Doxygen documentation
- (commercial feature only) Added a validity check for the certificate
  provisioned via EST; previous code could lead to an assertion failure if the
  server misbehaved or the system clock was not set correctly