diff --git a/lightningd/plugin.c b/lightningd/plugin.c index 21afb7654..de5737bea 100644 --- a/lightningd/plugin.c +++ b/lightningd/plugin.c @@ -131,8 +131,15 @@ void plugin_register(struct plugins *plugins, const char* path TAKES) /** * Kill a plugin process, with an error message. */ -static void plugin_kill(struct plugin *plugin, char *msg) +static void PRINTF_FMT(2,3) plugin_kill(struct plugin *plugin, char *fmt, ...) { + char *msg; + va_list ap; + + va_start(ap, fmt); + msg = tal_vfmt(plugin, fmt, ap); + va_end(ap); + log_broken(plugin->log, "Killing plugin: %s", msg); plugin->stop = true; io_wake(plugin); @@ -507,29 +514,24 @@ static bool plugin_rpcmethod_add(struct plugin *plugin, const char *buffer, longdesctok = json_get_member(buffer, meth, "long_description"); if (!nametok || nametok->type != JSMN_STRING) { - plugin_kill( - plugin, - tal_fmt(plugin, + plugin_kill(plugin, "rpcmethod does not have a string \"name\": %.*s", - meth->end - meth->start, buffer + meth->start)); + meth->end - meth->start, buffer + meth->start); return false; } if (!desctok || desctok->type != JSMN_STRING) { - plugin_kill(plugin, tal_fmt(plugin, - "rpcmethod does not have a string " - "\"description\": %.*s", - meth->end - meth->start, - buffer + meth->start)); + plugin_kill(plugin, + "rpcmethod does not have a string " + "\"description\": %.*s", + meth->end - meth->start, buffer + meth->start); return false; } if (longdesctok && longdesctok->type != JSMN_STRING) { - plugin_kill( - plugin, - tal_fmt(plugin, + plugin_kill(plugin, "\"long_description\" is not a string: %.*s", - meth->end - meth->start, buffer + meth->start)); + meth->end - meth->start, buffer + meth->start); return false; }