The backend open gets the caller as a context: the Session of Open, CreateFile
and the copies of MoveOrCopy, NULL for direct calls. Its result reaches the
client.
UA_Server_run_startup ignored the driver results and ran without
listening. It now fails if a transport cannot open its socket and
neither another transport nor a reverse connect reaches the server.
Add the file transfer tutorial, a custom in-memory backend example, and
build and feature documentation. Wire the public API and tutorial into
the generated driver documentation.
Co-authored-by: Julius Pfrommer <julius.pfrommer@o6-automation.com>
Fix misspellings found with codespell across headers, sources, examples,
tests and the documentation, including "propably" in the nodeset
compiler docs. Identifiers, companion spec names and generated code are
left untouched.
Security was only enabled with mbedTLS and without JSON compiled in, so
the default build ran unsecured. It now follows UA_ENABLE_ENCRYPTION and
the runtime --json choice (Part 14 defines message security for UADP).
They only depend on the PubSub policy factories, which every backend
provides now. The TPM keystore examples link the system OpenSSL by
name and stay out of LibreSSL builds.
Apply the Powerlink signal-handler fix to executables added on 1.5. Keep the handlers limited to updating volatile run flags so an interrupted logger cannot deadlock on its own lock.
The Valgrind harness can deliver SIGINT while another log call holds the stdout logger spinlock. Logging from the raw signal handler then waits forever because the interrupted thread cannot release the lock.\n\nKeep the handler limited to updating the volatile run flag. Preserve graceful handling of both SIGINT and SIGTERM.
A non-blocking client that recovers on its own from a server shutdown/restart and from a hung server (detected through the subscription inactivity callback), re-creating the subscription on every activated session.
Commit 8a34b4d7e replaced the connect-in-loop with UA_Client_runUntilInterrupt but dropped the connect call. runUntilInterrupt does not connect on its own (see its documentation), so the example stopped connecting to the server. Re-add the async connect.
Guards the definition of removeDeprecatedSecurityPolicies() with '#ifdef UA_ENABLE_ENCRYPTION' to prevent unused-function compiler warnings/errors on builds without encryption support.
Refactors main() in ci_server.c by extracting the dynamic logging configuration and deprecated security policy filtering into clean, static helper methods.
Excludes formally deprecated Basic128Rsa15 and Basic256 security policies and endpoints from our example server config, preventing inconsistency with rotated certificates.
Implements binary role serialization, file persistence, and automatic reload on startup in 'examples/ci_server.c' so that configured RBAC rules can survive container restarts.
Add an opt-in server setting that materializes Method declarations for each Object instance instead of sharing the ObjectType Method node. Per-instance Method nodes can then carry independent runtime state while the default behavior remains compatible.
Add global and type-specific lifecycle callbacks that run after defining references are installed but before mandatory children are instantiated. This lets applications precreate or customize children consistently for direct, namespace-zero and recursively instantiated nodes.
Adds two standalone examples demonstrating UA_EventLoop_new_GLib:
- eventloop_glib_minimal.c: a bare EventLoop + TCP ConnectionManager
(no UA_Server) driven entirely by g_main_loop_run(), echoing
received bytes and firing a repeating open62541 timer to show that
both sockets and timers are serviced by the same GLib iteration.
- eventloop_glib_server.c: a full UA_Server plugged into the GLib
EventLoop by presetting UA_ServerConfig.eventLoop (with a
registered TCP ConnectionManager) before UA_ServerConfig_setMinimal
runs, so the config helper reuses it instead of creating its own
POSIX EventLoop. UA_Server_run_iterate() is never called; the whole
SecureChannel/Session/Subscription lifecycle is serviced by
g_main_loop_run().
Neither example is wired into examples/CMakeLists.txt yet.
Claude-Session: https://claude.ai/code/session_01M4bVsYckhSnWQSP1kkHV52
Add a comment to the BrowseRequest example warning users not to use
UA_NODEID_STRING when the NodeId will be cleared by
UA_BrowseRequest_clear, since clearing will try to free the string
memory. Use UA_NODEID_STRING_ALLOC or UA_NodeId_copy instead.
Fixes#6777
* Enable a remote server URL to be provided as an argument.
* Default to localhost if no arguments are provided.
Signed-off-by: Jacob Stiffler <j-stiffler@ti.com>
Signed-off-by: Thorsten Lannynd <t-lannynd@ti.com>