github open62541/open62541 v1.5.4

one day ago

This open62541 release v1.5.4 is the fourth maintenance release of the 1.5 release series.

open62541 (http://open62541.org) is an open source implementation of OPC UA (OPC Unified Architecture / IEC 62541) written in the C language. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent: All platform-specific functionality is implemented via exchangeable plugins for easy porting to different (embedded) targets.

open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed with any proprietary software. Only changes to the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.

Important changes compared to the previous v1.5.3 release include:

  • core: Fix the case where the last chunk may exceed the max message size
  • core: Fix QualifiedName_parse when name contains a semicolon
  • core: Harden JSON parsing with error and max recursion checks
  • core: Allow UA_DateTime_parse without zero termination of the input string
  • core: Fix handling some empty elements (e.g. ) in the XML decoding
  • core: Handle array length == 0 and calloc returns NULL
  • server: Use un/lockServer() for the server-mutex in ua_server_async.c
  • server: Always return the correct method call status codes
  • server: Avoid stack-use-after-scope in removeCertificate (GDS push)
  • server: Check for writing null to non-nullable variable node
  • server: Fix missing values below Server object
  • server: Always set missing attribute timestamps
  • server: Always Add missing but required certificate to endpoints
  • server: Re-add MaxMonitoredItemsQueueSize
  • server: Mask all detailed certificate validation failures for identity tokens
  • server: Reset serverOnNetworkHash hash entry pointer to null to avoid stale references
  • server: Increase the number of default MaxContinuationPoints per session to 32
  • server: allow removal of CA certificates without valid CRL
  • server: Check size of uploaded TrustList in writeTrustList
  • server: Correct range check in UA_CAST_SIGNED macro
  • server: Allow reading values with uncertain status in readWithReadValue
  • server: Return BadWaitingForInitialData for empty non-nullable variables
  • server: Correctly guard anonymous-only TransferSubscription path
  • server: Allow anonymous subscription transfer on secure channels with matching ApplicationUri
  • server: Detach subscriptions on session timeout instead of deleting
  • server: Return Bad_WriteNotSupported for StatusWrite/TimestampWrite violations
  • server: Enforce AccessLevel StatusWrite and TimestampWrite bits
  • client: Add the UA_Client_runUntilInterrupt convenience function
  • client: Delete nsMapping on allocation failures during responseReadNamespacesArray
  • client: _getRemoteDataTypes() resolves in-call datatype dependencies
  • pubsub: Prevent potential double-free in NS0 type destructors
  • pubsub: Timeout when disabling all PubSub components
  • pubsub: Warn when structure fields with nested strings use RawData encoding
  • pubsub: Prevent null pointer dereference in removeGroupAction
  • el: Align the lwip EventLoop mutex to the POSIX EventLoop behavior
  • el: Improve batching scalability for large numbers of timers
  • el: Fix data races in timer implementation
  • el: Return on interface being NULL while opening an ethernet connection for POSIX
  • deps: Update ua-nodeset submodule to 257db9a
  • build: Include missing client symbols in amalgamation without discovery
  • build: Fix missing clock implementation in Win32/POSIX compatible amalgamation
  • docs: Add documentation of %Q specifier for UA_String_format
  • plugins: Add missing ECC security policies
  • plugins: Register an InterruptManager by default in the client EventLoop

Diff stat: 141 files changed, 18713 insertions(+), 1307 deletions(-)
Diff stat in /include and /src: 43 files changed, 849 insertions(+), 220 deletions(-)

New features and major changes compared to the previous 1.4 release series include:

  • core: JSON de/encoding according to the OPC UA 1.05 specification
  • core: XML de/encoding of Variants (also with multi-dimensional arrays) and structure-types
  • core: UA_String_format with shorthands to print OPC UA builtin types
  • arch: Support for FreeRTOS (using the lwip EventLoop)
  • arch: Support for QNX
  • arch: Support for Zephyr
  • server: Support for "local" Event-MonitoredItems
  • server: Extended async operations (read/write/call)
  • server: Improved value source API for VariableNodes
  • server: Implement CertificateGroup handling
  • server: Support for GDS push operations
  • client: Transparent mapping between local and remote namespace-indices
  • client: Automatically read the NamespaceArray during connect (add to the namespace mapping)
  • client: Support for Event-MonitoredItems
  • client: All async service APIs are typed
  • client: Load DataTypeDefinitions from the server at runtime
  • pubsub: Support for manual de/encoding of PubSub messages
  • pubsub: Custom state machine for PubSubComponents to integrate communication backends
  • pubsub: Public API to compute offset tables for fixed Network-/DataSetMessages
  • pubsub: Improved loading of PubSub configurations from a (binary) file
  • pubsub: Initial support for SKS
  • nodeset-compiler: Use the native XML decoding to parse attributes at runtime
  • util: Query language (and parser) for EventFilter, RelativePath, etc.
  • util: Convert DataTypeDefinition into UA_DataType (internal representation)
  • eventloop: EventLoop can be cancelled to immediately return from a "poll-sleep"
  • eventloop: Option to limit the number of sockets open at the same time
  • eventloop: Support for lwip-based EventLoop
  • plugins: Crypto PKI/SecurityGroup with a file-system storage backend
  • plugins: Support for ECC-based SecurityPolicies (OpenSSL only)
  • tools: "Shell mode" for the ua-cli terminal client

Don't miss a new open62541 release

NewReleases is sending notifications on new releases.