locka99 / opcua

A client and server implementation of the OPC UA specification written in Rust
Mozilla Public License 2.0
480 stars 129 forks source link

Support intermediate chunks #137

Closed milgner closed 2 years ago

milgner commented 2 years ago

When trying to connect to a TCP-based UA server, depending on the vendor implementation, the error "We don't support intermediate chunks yet" is thrown.

When connecting to a NodeJS-based server, the connection could be established successfully, but when connecting to the Prosys simulation server, it fails with the above error.

What would need to be done to support intermediate chunks? I assume the previous chunks would need to be saved before processing the message, with only the final message triggering message processing - but there's probably more to that? I.e. detecting if follow-up chunks arrive or something like that?

schroeder- commented 2 years ago

Which version are you using? Itermediate chunks are support with commit: https://github.com/locka99/opcua/commit/73d77d117b902f19e3e069624061393c1d8489e9

milgner commented 2 years ago

Oh my... not sure why but it was version 0.6.0. I upgraded to 0.8.1 and that error is gone.

Unfortunately establishing the connection takes a lot longer now. From an unnoticeable duration to a couple of seconds until the connection is established. I'll investigate this separately, though. Thank you for the heads-up!

milgner commented 2 years ago

For some reason I just ran into the same issue again, this time with version 0.8.1:

'We don't support intermediate chunks yet', /home/marcus/.cargo/registry/src/github.com-1ecc6299db9ec823/opcua-client-0.8.1/src/comms/tcp_transport.rs:83:17

It happens when calling get_server_endpoints_from_url.

locka99 commented 2 years ago

They are supported in 0.9.0 (the master branch) so I will close the issue as they will release when it does (no ETA)