Commit Graph
2133 Commits
Author SHA1 Message Date
Copilotandromanett 78a54705ce Handle BadRequestTimeout gracefully in Publish error handling (#3460)
* Initial plan

* Handle BadRequestTimeout gracefully in publish error handling

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2026-01-12 13:09:46 +01:00
romanett f7c3c4e18f Fix Server/ServerStatus/State SourceTimestamp. Fix Reference Server config, not loading OperationLimits due to wrong order. (#3454)
* fix ServerSourceTimestamp

* fix OperationLimits not being set for ReferenceServer
2026-01-12 13:09:15 +01:00
Copilotandromanett 9e192c6671 Fix ObjectDisposedException in SubscriptionManager background tasks on shutdown (#3456)
* Initial plan

* Fix ObjectDisposedException in SubscriptionManager background tasks

Add ObjectDisposedException handling in PublishSubscriptionsAsync and ConditionRefreshWorkerAsync to gracefully handle shutdown race condition where semaphore/events are disposed while background tasks are still running.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Update log messages to differentiate normal and disposed shutdown paths

Added clarification in log messages to indicate when tasks exit due to ObjectDisposedException during shutdown, making it easier to distinguish from normal shutdown in logs.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2026-01-12 08:07:33 +01:00
romanett 8b11d2bfa8 [Server] Add several interfaces to improve testability & prepare for Dependency Injection (#3448)
* add server interfaces

* Add IConfigurationNodeManager, IDiagnosticsNodeManager, IMasterNodeManager, IStandardServer, IApplicationInstance interfaces to Server. Add IMainNodeManagerFactory to create Diagnostics & MainNodeManager

* Use IApplicationInstance interface where appropriate

* fix review feedback
2026-01-12 08:06:12 +01:00
Tobias Frick 05f7023d29 Fix two bugs in MonitoredItem (client side) (#3447)
- Fix bug in MonitoredItem.Publish (for loop was never executed)
- MonitoredItem.CacheQueueSize property was not serialized
- Add unit tests for MonitoredItems
2026-01-12 08:05:05 +01:00
Tobias Frick 30f9359a52 Fix Session.Save to only save specified subscriptions (#3446)
- Use the subscriptions parameter instead of this.Subscriptions
- Add test to verify only specified subscriptions are saved
2026-01-09 09:06:56 +09:00
wxmayifei 6ab1bf7a5d fix format string (#3441) 2026-01-08 21:16:37 +09:00
romanett a3a6709d6f Refactor server for full async subscription management (#3442)
Refactor to make OPC UA server subscription and monitored item management fully asynchronous, improving scalability and responsiveness. All key methods in ISubscription, ISubscriptionManager, and related classes are now async, with synchronous counterparts removed.
2026-01-08 21:16:12 +09:00
romanett 5c80f9bc5a [Client & Server] Remove all usages of SoftwareCertificates (#3443)
* remove all usages of SoftwareCertificates
- Client
- Server

As per spec they are not relevant for security.
If an SDK User wants to use the SoftwareCertificates ActivateSession can be overriden

* remove from SessionClientBatchTests
2026-01-08 21:12:07 +09:00
dependabot[bot] 7ec6788ecf Bump NUnit.Console from 3.21.1 to 3.22.0 (#3440)
---
updated-dependencies:
- dependency-name: NUnit.Console
  dependency-version: 3.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-06 16:02:08 +09:00
e92e469923 [GDS] Add configurable validation limits for trust list file read/write operations (#3411)
* Initial plan

* Add trust list file size validation with configurable limits

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix potential integer overflow in trust list size validation

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix integer overflow in client trust list read validation

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add comprehensive tests for trust list size validation

Add TrustListValidationTest with tests for:
- Normal-sized trust lists (verify basic functionality)
- Trust lists exceeding 16MB limit (verify BadEncodingLimitsExceeded error)
- Trust lists just under limit (~15MB) (verify boundary condition)

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Make limits configurable on client side

* fix tests

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
2026-01-06 11:33:23 +09:00
romanett 1806172500 only run test on net 10, only print per node status in debug runs (#3439) 2026-01-06 11:32:15 +09:00
dependabot[bot] 0e18d5c256 Bump Roslynator.Formatting.Analyzers from 4.14.1 to 4.15.0 (#3435)
---
updated-dependencies:
- dependency-name: Roslynator.Formatting.Analyzers
  dependency-version: 4.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-31 09:34:34 +09:00
dependabot[bot]andMarc Schier 90156aee98 Bump System.Collections.Immutable from 10.0.0 to 10.0.1 (#3436)
---
updated-dependencies:
- dependency-name: System.Collections.Immutable
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marc Schier <marcschier@users.noreply.github.com>
2025-12-31 09:33:53 +09:00
dependabot[bot] 03af6458bc Bump System.Formats.Asn1 from 10.0.0 to 10.0.1 (#3437)
---
updated-dependencies:
- dependency-name: System.Formats.Asn1
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-31 09:33:33 +09:00
dependabot[bot] 75be609b10 Bump System.Text.Json from 10.0.0 to 10.0.1 (#3438)
---
updated-dependencies:
- dependency-name: System.Text.Json
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-30 12:46:34 +09:00
dependabot[bot]andMarc Schier 56b4818311 Bump NUnit.Console from 3.21.0 to 3.21.1 (#3431)
---
updated-dependencies:
- dependency-name: NUnit.Console
  dependency-version: 3.21.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marc Schier <marcschier@users.noreply.github.com>
2025-12-24 17:09:33 +09:00
dependabot[bot] 4f44096ad4 Bump NUnit3TestAdapter from 6.0.0 to 6.0.1 (#3432)
---
updated-dependencies:
- dependency-name: NUnit3TestAdapter
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-24 14:17:15 +09:00
dependabot[bot] e6f5bd0b9b Bump Roslynator.Analyzers from 4.14.1 to 4.15.0 (#3433)
---
updated-dependencies:
- dependency-name: Roslynator.Analyzers
  dependency-version: 4.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-24 14:16:47 +09:00
703069ed97 Add long-running connection stability test with dynamic token renewal (#3424)
* Initial plan

* Add connection stability test with 5-minute token renewal

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Fix code style issues in ConnectionStabilityTest

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Remove unused dictionaries to reduce memory overhead

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Extract magic numbers to named constants for better maintainability

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Add explicit permissions to workflow for security

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Change non-CI test duration to 30 minutes for 6 token renewals

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Set local test to 1 min with 10-second token renewal for 6 renewals

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Fix SecurityTokenLifeTime to be applied for Server & Client before Startup

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>
Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
2025-12-22 12:20:09 +09:00
dependabot[bot]andSuciu Mircea Adrian e731b32308 Bump Microsoft.Extensions.Logging.Abstractions from 10.0.0 to 10.0.1 (#3420)
* Bump Microsoft.Extensions.Logging.Abstractions from 10.0.0 to 10.0.1

---
updated-dependencies:
- dependency-name: Microsoft.Extensions.Logging.Abstractions
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update System.Diagnostics.DiagnosticSource version to 10.0.1

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Suciu Mircea Adrian <Mircea-Adrian.Suciu@softing.com>
2025-12-18 09:24:16 +02:00
dependabot[bot] d41781f452 Bump Microsoft.Extensions.Logging from 10.0.0 to 10.0.1 (#3419)
---
updated-dependencies:
- dependency-name: Microsoft.Extensions.Logging
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-17 18:38:51 +02:00
Suciu Mircea AdrianandRoman Ettlinger d7da70b81e Refactor ApplicationConfiguration serialization for deprecated/modern settings and add tests for configuration behavior (#3415)
* Refactor ApplicationConfiguration serialization for deprecated settings and add tests for configuration behavior

* Update ApplicationConfiguration to prefer modern elements in "hybrid" configurations and add corresponding tests

* Fix GDS Tests on netstandard2.1 custom test target

* Add Test reading file containing ApplicationCertificate and ApplicationCertificates ensuring it is not marked legacy.

* Add legacy config test with only one ApplicationCertificate

---------

Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
2025-12-17 14:08:08 +02:00
opcfoundation-organdRandy Armstrong 75f2a6ac6a Add OPCUA_EXCLUDE_AccessLevelExType to Opc.Ua.Core.csproj (#3421)
Co-authored-by: Randy Armstrong <randy@sparhawksoftware.com>
2025-12-17 01:19:09 -08:00
dependabot[bot] 113dbde541 Bump actions/upload-artifact from 5 to 6 (#3416)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-16 17:09:32 +02:00
Lessi a84c812c92 Add event to update session when diagnostic counters changes (#3407) 2025-12-16 16:58:15 +02:00
dependabot[bot] d013ce6e6b Bump Microsoft.Extensions.Configuration and Microsoft.Extensions.Configuration.EnvironmentVariables (#3418)
Bumps Microsoft.Extensions.Configuration from 10.0.0 to 10.0.1
Bumps Microsoft.Extensions.Configuration.EnvironmentVariables from 10.0.0 to 10.0.1

---
updated-dependencies:
- dependency-name: Microsoft.Extensions.Configuration
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: Microsoft.Extensions.Configuration.EnvironmentVariables
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-15 17:15:59 +02:00
Copilotandromanett 4b6d3b7e83 Restore clean console output in ConsoleReferenceServer and ConsoleReferenceClient (#3409)
* Initial plan

* Replace logger calls with Console.WriteLine for user-facing messages

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-12 11:53:27 +02:00
7c684f4f87 Fix client returning BadUserAccessDenied when SecurityPolicy or SecurityMode not matching (#3270)
* Initial plan

* Fix BadUserAccessDenied when SecurityPolicy/SecurityMode not matching

Modified MatchEndpoints method to throw appropriate exceptions:
- BadSecurityPolicyRejected when requested policy is not supported
- BadSecurityModeRejected when requested mode is not supported
- Maintains backward compatibility when no specific security settings requested

Added comprehensive tests to verify the fix.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Improve code readability with extracted boolean variables

Applied code review feedback to extract parameter validation checks
into separate boolean variables for better readability.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add integration test for unsupported security policy

Added ConnectWithUnsupportedSecurityPolicyAsync test that:
- Uses ClientFixture to connect to test server
- Requests a security policy not supported by server
- Verifies BadSecurityPolicyRejected is thrown instead of BadUserAccessDenied
- Tests run successfully on net8.0 and net9.0 targets

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add policy that will never work

* ignore faulty test

* update

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
2025-12-12 11:50:25 +02:00
romanett 1e6a043597 Fix MinNonceLength for SecurityPolicies.Basic128Rsa15 (#3410) 2025-12-12 10:38:50 +02:00
73a6f8b14d Remove BouncyCastle dependency from GDS Server (#3393)
* Initial plan

* Replace BouncyCastle dependency with .NET Framework APIs for CSR parsing in GDS Server

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Address code review feedback: improve error handling and add RSA key validation

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add comprehensive tests for PKCS#10 CSR parsing functionality

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Fix collection expression syntax for broader framework compatibility

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Fix ECDSA signature verification and remove useless test

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Fix ECDSA signature format conversion based on code review

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* Improve RSA/ECDSA CSR parsing and .NET Framework test logic

- Remove leading zero from RSA modulus and validate key sizes in PKCS#10 CSR parsing.
- Enhance ECDSA signature decoding: return null for invalid sizes, trim only a single leading zero, and prevent exceptions on malformed signatures.
- Restrict GDS test certificate types to RSA on .NET Framework; skip ECC signing tests where unsupported.
- Add stub for unsupported signing request checks.
- General code cleanup and improved comments for clarity and standards compliance.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>
Co-authored-by: Marc Schier <marcschier@hotmail.com>
2025-12-11 15:55:07 +01:00
e032dae878 Fix thread pool exhaustion with many MQTT writer groups (#3395)
* Initial plan

* Convert PubSub PublishNetworkMessage to async to prevent thread pool exhaustion

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix test files to properly use async/await patterns

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add Async suffix to PublishNetworkMessage method

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>
2025-12-10 07:29:57 +01:00
Suciu Mircea Adrian 965c5ec522 Only treat an actual StatusCode value equal to Good as null to avoid mis-encoding (#3403)
* Only treat an actual StatusCode value equal to Good as null to avoid misencoding

* Removed orhpaned #endregion
2025-12-10 07:28:34 +01:00
dependabot[bot]andSuciu Mircea Adrian 38e3431165 Bump NUnit3TestAdapter from 5.2.0 to 6.0.0 (#3391)
---
updated-dependencies:
- dependency-name: NUnit3TestAdapter
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Suciu Mircea Adrian <Mircea-Adrian.Suciu@softing.com>
2025-12-10 05:47:24 +01:00
Marc Schier df212479fa Disable mac os actions (#3404) 2025-12-10 05:46:46 +01:00
ae03267fbd Add optional parent-child linking when importing NodeSet2.xml (#3396)
* Initial plan

* Fix parent-child references when importing NodeSet2.xml

- Added LinkParentChildRelationships method to establish parent-child links after import
- Sets Parent property and adds child to parent's children collection
- Added test to verify parent-child references work correctly after import
- All existing tests continue to pass

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Make parent-child linking optional with default false

- Added linkParentChild parameter to Import method (defaults to false)
- Maintains backward compatibility by not establishing parent-child relationships by default
- Added test to verify backward compatibility (default behavior)
- Updated ParentChildReferencesTest to explicitly enable the feature
- All 7 tests pass

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>
2025-12-09 21:24:41 +01:00
Copilotandromanett e170c58b87 Fix CallMethodResult.InputArgumentResults to comply with OPC UA Part 4 Section 5.12 (#3398)
* Initial plan

* Fix method call status codes to comply with OPC UA Part 4 Section 5.12

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Improve comments to reference OPC UA Part 4 Section 5.12 compliance

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-09 19:50:08 +01:00
Copilotandromanett bf67f39e2b Fix race condition causing duplicate MonitoredItems in concurrent CreateItemsAsync calls (#3399)
* Initial plan

* Fix race condition in MonitoredItem creation

Add Creating flag to prevent duplicate items when CreateItemsAsync is called concurrently.
- Add internal Creating flag to MonitoredItemStatus
- Check Creating flag in PrepareItemsToCreateAsync
- Set Creating flag before releasing lock
- Clear Creating flag in SetCreateResult (success or failure)
- Add exception handling in CreateItemsAsync to clear Creating flag on errors
- Add test for concurrent CreateItemsAsync calls

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Address code review feedback - add comment for concurrent tasks constant

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-09 19:49:36 +01:00
Copilotandromanett c9b211e61e Add comprehensive OPC UA Profiles and Facets documentation (#3397)
* Initial plan

* Add comprehensive OPC UA Profiles and Facets documentation

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix URL in Profiles documentation to use current OPC Foundation site

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-09 17:49:09 +01:00
Copilotandromanett 35db94cb31 Add client-based NodeSet2 export functionality (#3400)
* Initial plan

* Add client-based nodeset export functionality

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add tests for client-based nodeset export functionality

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add documentation for client-based nodeset export feature

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-09 17:48:08 +01:00
dependabot[bot] 5371f88634 Bump NUnit.Console from 3.20.2 to 3.21.0 (#3390)
---
updated-dependencies:
- dependency-name: NUnit.Console
  dependency-version: 3.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-08 16:31:26 +02:00
f970392177 Fix SourceTimestamp and ServerTimestamp mismatch in ServerStatus children (#3386)
* Initial plan

* Fix ServerTimestamp to match SourceTimestamp in CoreNodeManager

Set ServerTimestamp equal to SourceTimestamp after node read operations
to ensure consistency. Previously, ServerTimestamp was set early (before
the node's read callback), while SourceTimestamp was set during the
callback, causing timestamp mismatches for nodes like ServerStatus children.

Added test to verify timestamp matching (currently failing - more investigation needed)

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Apply timestamp fix to CustomNodeManager

Extended the ServerTimestamp fix to CustomNodeManager which handles
ServerStatus and other diagnostic nodes. CustomNodeManager was setting
ServerTimestamp early and separately from SourceTimestamp, causing the
mismatch. Now both timestamps are synchronized after reading values.

All tests pass including the new ServerStatusTimestampsMatchAsync test.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Improve comments based on code review feedback

Clarified that timestamp synchronization applies specifically to Value
attributes, and explained the difference in handling between Value and
non-Value attributes (non-Value attributes only use ServerTimestamp).

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix and update serilog package

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: Marc Schier <marcschier@users.noreply.github.com>
Co-authored-by: Marc Schier <marcschier@hotmail.com>
2025-12-05 17:56:10 +01:00
Copilotandromanett dc85d522a6 Add support for private encodeable factory in server initialization (#3366)
* Initial plan

* Add support for private encodeable factory in server initialization

- Add new ServiceMessageContext constructor that accepts a custom IEncodeableFactory
- Add CreateMessageContext(IEncodeableFactory) overload to ApplicationConfiguration
- Mark CreateMessageContext(bool) as obsolete since the clonedFactory parameter was never used
- Add PrivateEncodeableFactory property to ServerBase for specifying a private factory
- Update all internal calls to use the new parameterless CreateMessageContext()

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add unit tests for ServiceMessageContext private factory support

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Improve documentation for ServiceMessageContext constructors

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-05 14:20:50 +01:00
Copilotandromanett 0f196ba7a5 Add support for restoring triggered monitored items on session reconnect (#3377)
* Initial plan

* Add triggering item tracking and restoration support

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Changes before error encountered

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix test to use proper subscription/monitored item creation pattern

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-05 14:18:14 +01:00
Copilotandromanett 7cd5ae34ec Fix ExtractValueFromVariant method call condition (#3382)
* Initial plan

* Changes before error encountered

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix ExtractValueFromVariant condition and add comprehensive tests

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-05 08:32:47 +01:00
05e171ab7b Fix: Enable historical data access for historizing nodes in Reference Server (#3383)
* Initial plan

* Fix: Add HistoryReadRawModified override to enable historical data access

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Refactor: Inline HistoryReadResult creation per code review

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Test: Add HistoryReadInt32ValueNodeAsync test for historizing node

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: Marc Schier <marcschier@users.noreply.github.com>
2025-12-05 06:35:54 +01:00
74c3cb08d4 Fix: State helper methods now update timestamps and clear change masks (#3371)
* Initial plan

* Fix: Add timestamp updates and ClearChangeMasks calls to State helper methods

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add tests for State helper method timestamp and change mask updates

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Improve test reliability by removing Thread.Sleep

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Resolve merge conflict with master by incorporating EvaluateRetainStateOnEnable method

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

* rename for merge

* merge update

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>
Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
2025-12-05 06:35:11 +01:00
Copilotandromanett 3f660af97d Fix BaseVariableState to return correct BuiltInType for Byte arrays vs ByteString (#3384)
* Initial plan

* Fix ByteString vs Byte array distinction in WrappedValue

Modified BaseVariableState.WrappedValue to use DataType and ValueRank
when creating Variant to correctly distinguish between byte[] (Byte array)
and ByteString. Added tests to verify the fix.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Address code review feedback

- Remove redundant null check for NodeId (NodeId.IsNull handles null)
- Update comment in test to be more specific about ByteString testing

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-04 20:13:01 +01:00
Copilotandromanett 226dd783c0 Make Network Socket in UdpPubSubConnection reachable (#3385)
* Initial plan

* Add public properties to expose UDP client sockets in UdpPubSubConnection

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Update documentation comments to be more accurate

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Optimize property access by returning list directly instead of creating wrapper

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Use AsReadOnly() to ensure true immutability and prevent external modification

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Remove unused import

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2025-12-04 20:09:57 +01:00
Marc Schier 2960388560 Update headers and license files (#3388)
Update license headers to copy right year 2025, replace RCL/GPL headers with MIT, replace the nuget license with MIT (via license expression).
2025-12-04 19:44:40 +01:00