Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This pull request adds asyncua as a supported server type by strictly following the step-by-step instructions described in README.md.
In addition, a fix was required in opcua_utils.py to correctly support numeric NodeId identifiers larger than uint16 when targeting asyncua-based implementations.
Technical Details
The close_session(...) function was extended to properly handle numeric identifiers greater than 65,535.
Previously, identifiers exceeding uint16 caused an incorrect encoding mask to be used (7 bytes instead of 4 bytes), which resulted in the timestamp NodeId being overwritten.
The updated logic ensures correct encoding for larger numeric identifiers and prevents this corruption, while not affecting other selectable target types.
Testing
BrowseRequest (long-term test)
~72,200,000 requests
All other supported request types
~5,000,000 requests per request type
No crashes or fatal errors were observed during testing.
On the server side, an average of approximately 2% of requests resulted in non-critical exceptions, including:
All observed exceptions were handled correctly by the server and did not impact availability or stability.
At no point was the server rendered unusable; new client connections remained possible throughout the test runs.
The majority of exceptions were caused by fuzzed metadata fields that describe message formatting, leading to intentionally malformed but non-fatal requests.
Environment