Browse Source

libplugin: initialize deprecated in getmanifest.

We currently do it by calling listconfigs, but that may be too late.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
bump-pyln-proto
Rusty Russell 4 years ago
parent
commit
c85b14f06d
  1. 24
      plugins/libplugin.c

24
plugins/libplugin.c

@ -568,10 +568,24 @@ send_outreq(struct plugin *plugin, const struct out_req *req)
}
static struct command_result *
handle_getmanifest(struct command *getmanifest_cmd)
handle_getmanifest(struct command *getmanifest_cmd,
const char *buf,
const jsmntok_t *getmanifest_params)
{
struct json_stream *params = jsonrpc_stream_success(getmanifest_cmd);
struct plugin *p = getmanifest_cmd->plugin;
const jsmntok_t *dep;
/* This was added post 0.9.0 */
dep = json_get_member(buf, getmanifest_params, "allow-deprecated-apis");
if (!dep)
deprecated_apis = true;
else {
if (!json_to_bool(buf, dep, &deprecated_apis))
plugin_err(p, "Invalid allow-deprecated-apis '%.*s'",
json_tok_full_len(dep),
json_tok_full(buf, dep));
}
json_array_start(params, "options");
for (size_t i = 0; i < tal_count(p->opts); i++) {
@ -765,7 +779,6 @@ static struct command_result *handle_init(struct command *cmd,
struct sockaddr_un addr;
size_t i;
char *dir, *network;
struct json_out *param_obj;
struct plugin *p = cmd->plugin;
bool with_rpc = p->rpc_conn != NULL;
@ -812,11 +825,6 @@ static struct command_result *handle_init(struct command *cmd,
membuf_init(&p->rpc_conn->mb, tal_arr(p, char, READ_CHUNKSIZE),
READ_CHUNKSIZE, membuf_tal_realloc);
param_obj = json_out_obj(NULL, "config", "allow-deprecated-apis");
deprecated_apis =
streq(rpc_delve(tmpctx, p, "listconfigs", take(param_obj),
".allow-deprecated-apis"),
"true");
}
opttok = json_get_member(buf, params, "options");
@ -1022,7 +1030,7 @@ static void ld_command_handle(struct plugin *plugin,
if (!plugin->manifested) {
if (streq(cmd->methodname, "getmanifest")) {
handle_getmanifest(cmd);
handle_getmanifest(cmd, plugin->buffer, paramstok);
plugin->manifested = true;
return;
}

Loading…
Cancel
Save