Support 64-bit integers in daemon XML-RPC - #1275
Conversation
Signed-off-by: Sylvester Kaczmarek <16242628+sylvesterkaczmarek@users.noreply.github.com>
|
Tick the box to add this pull request to the merge queue (same as
|
fujitatomoya
left a comment
There was a problem hiding this comment.
the implementation to patch the mashaller looks good to work, but i would take the other path to address the root cause such as JSON-RPC 2.0 over the existing loopback HTTP transport. at least, this needs to be tested.
| @@ -0,0 +1,46 @@ | |||
| # Copyright 2026 Open Source Robotics Foundation, Inc. | |||
There was a problem hiding this comment.
i think we need an actual test with xmlrlc client via ros2daemon.
There was a problem hiding this comment.
Thanks. I added transport-level coverage using ros2daemon's own make_xmlrpc_server() together with DaemonNode, so the test now sends and receives a 64-bit integer through the actual HTTP/XML-RPC client/server path.
I kept this PR scoped to compatibility with the existing XML-RPC transport. Moving the daemon protocol to something like JSON-RPC would be a substantially larger architectural change and can be considered separately.
Signed-off-by: Sylvester Kaczmarek <16242628+sylvesterkaczmarek@users.noreply.github.com>
Signed-off-by: Sylvester Kaczmarek <16242628+sylvesterkaczmarek@users.noreply.github.com>
Summary
Fixes #629.
Python's standard XML-RPC marshaller rejects integers outside the signed 32-bit range even though its unmarshaller supports the standard
i8extension.Register a custom integer marshaller that:
inttag for signed 32-bit valuesi8for signed 64-bit valuesThis allows daemon RPC payloads to carry 64-bit integer values without changing existing 32-bit output.
Testing
Added focused round-trip coverage for:
inti8Did you use Generative AI?
Yes. AI was used to assist with tests.