From 43b037ab0b372397cecc477a50fef201b0b313ed Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sat, 10 Sep 2022 11:29:31 +0930 Subject: [PATCH] lightningd: always require "jsonrpc": "2.0" in request. Changelog-Removed: JSONRPC: RPC framework now requires the `"jsonrpc"` property inside the request (deprecated in v0.10.2) Signed-off-by: Rusty Russell --- lightningd/jsonrpc.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/lightningd/jsonrpc.c b/lightningd/jsonrpc.c index d48ec8509..3b758ddcf 100644 --- a/lightningd/jsonrpc.c +++ b/lightningd/jsonrpc.c @@ -677,7 +677,7 @@ static void replace_command(struct rpc_command_hook_payload *p, const char *buffer, const jsmntok_t *replacetok) { - const jsmntok_t *method = NULL, *params = NULL; + const jsmntok_t *method = NULL, *params = NULL, *jsonrpc; const char *bad; /* Must contain "method", "params" and "id" */ @@ -709,14 +709,10 @@ static void replace_command(struct rpc_command_hook_payload *p, goto fail; } - // deprecated phase to give the possibility to all to migrate and stay safe - // from this more restrictive change. - if (!deprecated_apis) { - const jsmntok_t *jsonrpc = json_get_member(buffer, replacetok, "jsonrpc"); - if (!jsonrpc || jsonrpc->type != JSMN_STRING || !json_tok_streq(buffer, jsonrpc, "2.0")) { - bad = "jsonrpc: \"2.0\" must be specified in the request"; - goto fail; - } + jsonrpc = json_get_member(buffer, replacetok, "jsonrpc"); + if (!jsonrpc || jsonrpc->type != JSMN_STRING || !json_tok_streq(buffer, jsonrpc, "2.0")) { + bad = "jsonrpc: \"2.0\" must be specified in the request"; + goto fail; } was_pending(command_exec(p->cmd->jcon, p->cmd, buffer, replacetok, @@ -853,7 +849,7 @@ REGISTER_PLUGIN_HOOK(rpc_command, static struct command_result * parse_request(struct json_connection *jcon, const jsmntok_t tok[]) { - const jsmntok_t *method, *id, *params; + const jsmntok_t *method, *id, *params, *jsonrpc; struct command *c; struct rpc_command_hook_payload *rpc_hook; bool completed; @@ -881,13 +877,11 @@ parse_request(struct json_connection *jcon, const jsmntok_t tok[]) // Adding a deprecated phase to make sure that all the Core Lightning wrapper // can migrate all the frameworks - if (!deprecated_apis) { - const jsmntok_t *jsonrpc = json_get_member(jcon->buffer, tok, "jsonrpc"); + jsonrpc = json_get_member(jcon->buffer, tok, "jsonrpc"); - if (!jsonrpc || jsonrpc->type != JSMN_STRING || !json_tok_streq(jcon->buffer, jsonrpc, "2.0")) { - json_command_malformed(jcon, "null", "jsonrpc: \"2.0\" must be specified in the request"); - return NULL; - } + if (!jsonrpc || jsonrpc->type != JSMN_STRING || !json_tok_streq(jcon->buffer, jsonrpc, "2.0")) { + json_command_malformed(jcon, "null", "jsonrpc: \"2.0\" must be specified in the request"); + return NULL; } /* Allocate the command off of the `jsonrpc` object and not