From d2688bbaf5fb6f3801b1e311f46f1a43f7ce2a65 Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Tue, 3 Mar 2020 14:02:06 +0100 Subject: [PATCH] plugin: Unwrap the rpc_command payload We were nesting like the following: ```json {"params": { "rpc_command": { "rpc_command": { } } } ``` This is really excessive, so we unwrap once, and now have the following: ```json {"params": { "rpc_command": { } } ``` Still more wrapping than necessary (the method is repeated in the `params` object), but it's getting closer. Changelog-Deprecated: JSON-RPC: Removed double wrapping of `rpc_command` payload in `rpc_command` JSON field. Suggested-by: @fiatjaf Signed-off-by: Christian Decker <@cdecker> --- lightningd/jsonrpc.c | 16 +++++++++++++++- tests/plugins/rpc_command.py | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lightningd/jsonrpc.c b/lightningd/jsonrpc.c index 9504c302c..7f5a35bf7 100644 --- a/lightningd/jsonrpc.c +++ b/lightningd/jsonrpc.c @@ -611,8 +611,22 @@ struct rpc_command_hook_payload { static void rpc_command_hook_serialize(struct rpc_command_hook_payload *p, struct json_stream *s) { + const jsmntok_t *tok; + size_t i; + char *key; json_object_start(s, "rpc_command"); - json_add_tok(s, "rpc_command", p->request, p->buffer); + +#ifdef COMPAT_V081 + if (deprecated_apis) + json_add_tok(s, "rpc_command", p->request, p->buffer); +#endif + + json_for_each_obj(i, tok, p->request) { + key = tal_strndup(NULL, p->buffer + tok->start, + tok->end - tok->start); + json_add_tok(s, key, tok + 1, p->buffer); + tal_free(key); + } json_object_end(s); } diff --git a/tests/plugins/rpc_command.py b/tests/plugins/rpc_command.py index 5ff12b08c..3d951246e 100755 --- a/tests/plugins/rpc_command.py +++ b/tests/plugins/rpc_command.py @@ -9,7 +9,7 @@ plugin = Plugin() @plugin.hook("rpc_command") def on_rpc_command(plugin, rpc_command, **kwargs): - request = rpc_command["rpc_command"] + request = rpc_command if request["method"] == "invoice": # Replace part of this command request["params"]["description"] = "A plugin modified this description"