Skip to content

Added support for Asyncua#6

Open
timobeer73 wants to merge 2 commits intoclaroty:mainfrom
timobeer73:feature/asyncua-extension
Open

Added support for Asyncua#6
timobeer73 wants to merge 2 commits intoclaroty:mainfrom
timobeer73:feature/asyncua-extension

Conversation

@timobeer73
Copy link

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:

  • UaError
  • ValueError
  • NotEnoughData
  • ConnectionResetError

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

  • Python: 3.11.9
  • asyncua: 1.1.6
  • OS: Windows

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant