plugins: don't hand empty strings for unset options.

This was deeply surprising to me; there's a difference between a value not being
specified, and it being specified as "".

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2019-05-20 20:37:57 +09:30 committed by Christian Decker
parent f65eecee27
commit 8b2a84a0c7
2 changed files with 3 additions and 4 deletions

View File

@ -40,7 +40,7 @@ methods are required:
- `getmanifest` asks the plugin for command line options and JSON-RPC - `getmanifest` asks the plugin for command line options and JSON-RPC
commands that should be passed through commands that should be passed through
- `init` is called after the command line options have been - `init` is called after the command line options have been
parsed and passes them through with the real values. This is also parsed and passes them through with the real values (if specified). This is also
the signal that `lightningd`'s JSON-RPC over Unix Socket is now up the signal that `lightningd`'s JSON-RPC over Unix Socket is now up
and ready to receive incoming requests from the plugin. and ready to receive incoming requests from the plugin.

View File

@ -1000,9 +1000,8 @@ static void plugin_config(struct plugin *plugin)
list_for_each(&plugin->plugin_opts, opt, list) { list_for_each(&plugin->plugin_opts, opt, list) {
/* Trim the `--` that we added before */ /* Trim the `--` that we added before */
name = opt->name + 2; name = opt->name + 2;
if (!opt->value) if (opt->value)
opt->value = ""; json_add_string(req->stream, name, opt->value);
json_add_string(req->stream, name, opt->value);
} }
json_object_end(req->stream); /* end of .params.options */ json_object_end(req->stream); /* end of .params.options */