If the server side transport quota MaxByteStringLength is smaller than the size of a byte string exposed in the server address space the attempt to read the value of this byte string results in a BadEncodingLimitsExceeded status code. This can be addressed by a client by reading the ByteString in chunks of size MaxByteStringLength.
In case the byte string is a DataDictionary instance (according to the v103 spec), this is, however, not so easy, since the read service call is buried rather deeply in the processing logic for reading and evaluating the data dictionary. A client which would want to fix this on application side would have to replicate parts of that logic.
Expected Behavior
Especially in the situation where at least one of client and server does not support the v104 way of defining structured data types and custom types, the stack functionality should allow to read a data dictionary even if its size exceeds the encoding limits for bytestrings. This amounts to supporting the reading of a byte string in chunks.
Steps To Reproduce
Compile the UA Reference Solution.
For the Console Reference Server, set the MaxByteStringLength to a value which is smaller than one of the two built-in data type dictionaries (4096 will do ;-)
try to read a data type dictionary with a client which only supports v103 of the spec, or by directly trying to read the node "ns=0;i=7617"
Environment
- OS:
- Environment:
- Runtime:
- Nuget Version:
- Component:
- Server: master branch as of 202401002 (1.4.372.116)
- Client: same as server
Anything else?
I'll provide a pull request with a solution proposal shortly.
Type of issue
Current Behavior
If the server side transport quota
MaxByteStringLength
is smaller than the size of a byte string exposed in the server address space the attempt to read the value of this byte string results in aBadEncodingLimitsExceeded
status code. This can be addressed by a client by reading the ByteString in chunks of sizeMaxByteStringLength
. In case the byte string is aDataDictionary
instance (according to the v103 spec), this is, however, not so easy, since the read service call is buried rather deeply in the processing logic for reading and evaluating the data dictionary. A client which would want to fix this on application side would have to replicate parts of that logic.Expected Behavior
Especially in the situation where at least one of client and server does not support the v104 way of defining structured data types and custom types, the stack functionality should allow to read a data dictionary even if its size exceeds the encoding limits for bytestrings. This amounts to supporting the reading of a byte string in chunks.
Steps To Reproduce
MaxByteStringLength
to a value which is smaller than one of the two built-in data type dictionaries (4096 will do ;-)"ns=0;i=7617"
Environment
Anything else?
I'll provide a pull request with a solution proposal shortly.