mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 14:42:40 +01:00
plugins/bcli: fix leak report when bitcoind goes away.
I shut down bitcoind during a test, and bcli leak reports flooded in. They're all temporary, but this fixes them. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
5190a21d3d
commit
7ddebada90
1 changed files with 9 additions and 9 deletions
|
@ -179,9 +179,9 @@ static char *args_string(const tal_t *ctx, const char **args)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static char *bcli_args(struct bitcoin_cli *bcli)
|
||||
static char *bcli_args(const tal_t *ctx, struct bitcoin_cli *bcli)
|
||||
{
|
||||
return args_string(bcli, bcli->args);
|
||||
return args_string(ctx, bcli->args);
|
||||
}
|
||||
|
||||
/* Only set as destructor once bcli is in current. */
|
||||
|
@ -216,7 +216,7 @@ static void bcli_failure(struct bitcoin_cli *bcli,
|
|||
"we have been retrying command for "
|
||||
"--bitcoin-retry-timeout=%"PRIu64" seconds; "
|
||||
"bitcoind setup or our --bitcoin-* configs broken?",
|
||||
bcli_args(bcli),
|
||||
bcli_args(tmpctx, bcli),
|
||||
exitstatus,
|
||||
bitcoind->error_count,
|
||||
(int)bcli->output_bytes,
|
||||
|
@ -224,7 +224,7 @@ static void bcli_failure(struct bitcoin_cli *bcli,
|
|||
bitcoind->retry_timeout);
|
||||
|
||||
plugin_log(bcli->cmd->plugin, LOG_UNUSUAL, "%s exited with status %u",
|
||||
bcli_args(bcli), exitstatus);
|
||||
bcli_args(tmpctx, bcli), exitstatus);
|
||||
bitcoind->error_count++;
|
||||
|
||||
/* Retry in 1 second */
|
||||
|
@ -242,19 +242,19 @@ static void bcli_finished(struct io_conn *conn UNUSED, struct bitcoin_cli *bcli)
|
|||
if (msec > 10000)
|
||||
plugin_log(bcli->cmd->plugin, LOG_UNUSUAL,
|
||||
"bitcoin-cli: finished %s (%"PRIu64" ms)",
|
||||
bcli_args(bcli), msec);
|
||||
bcli_args(tmpctx, bcli), msec);
|
||||
|
||||
assert(bitcoind->num_requests[prio] > 0);
|
||||
|
||||
/* FIXME: If we waited for SIGCHILD, this could never hang! */
|
||||
while ((ret = waitpid(bcli->pid, &status, 0)) < 0 && errno == EINTR);
|
||||
if (ret != bcli->pid)
|
||||
plugin_err(bcli->cmd->plugin, "%s %s", bcli_args(bcli),
|
||||
plugin_err(bcli->cmd->plugin, "%s %s", bcli_args(tmpctx, bcli),
|
||||
ret == 0 ? "not exited?" : strerror(errno));
|
||||
|
||||
if (!WIFEXITED(status))
|
||||
plugin_err(bcli->cmd->plugin, "%s died with signal %i",
|
||||
bcli_args(bcli),
|
||||
bcli_args(tmpctx, bcli),
|
||||
WTERMSIG(status));
|
||||
|
||||
/* Implicit nonzero_exit_ok == false */
|
||||
|
@ -380,7 +380,7 @@ static struct command_result *command_err_bcli_badjson(struct bitcoin_cli *bcli,
|
|||
const char *errmsg)
|
||||
{
|
||||
char *err = tal_fmt(bcli, "%s: bad JSON: %s (%.*s)",
|
||||
bcli_args(bcli), errmsg,
|
||||
bcli_args(tmpctx, bcli), errmsg,
|
||||
(int)bcli->output_bytes, bcli->output);
|
||||
return command_done_err(bcli->cmd, BCLI_ERROR, err, NULL);
|
||||
}
|
||||
|
@ -537,7 +537,7 @@ static struct command_result *process_sendrawtransaction(struct bitcoin_cli *bcl
|
|||
if (bcli->exitstatus)
|
||||
plugin_log(bcli->cmd->plugin, LOG_DBG,
|
||||
"sendrawtx exit %i (%s) %.*s",
|
||||
*bcli->exitstatus, bcli_args(bcli),
|
||||
*bcli->exitstatus, bcli_args(tmpctx, bcli),
|
||||
*bcli->exitstatus ?
|
||||
(u32)bcli->output_bytes-1 : 0,
|
||||
bcli->output);
|
||||
|
|
Loading…
Add table
Reference in a new issue