Differentiate calls with no params and calls with empty list param #12
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.
This change set proposes adding support for method calls with an empty array of positional arguments.
Rationale
When issuing a call with positional arguments, the current implementation doesn't differentiate between the calls missing the
params
property completely and the calls with theparams
property containing an empty array. In both cases, the eventual JSON-RPC request won't contain theparams
property.Unfortunately there are services that require messages with empty
params
, as this behavior does not contradict the official JSON-RPC specification and its handling is at the server's discretion.Proposed solution
If
JsonRpcClient::CallMethod
is invoked with two arguments: ID and the method name, generate a request without theparams
property. IfJsonRpcClient::CallMethod
is invoked with three arguments and the params argument is an empty vector, then generate a request with theparams
property containing an empty array.