mirror of
https://github.com/aljazceru/lightning.git
synced 2026-02-06 06:34:22 +01:00
wallet: clean up json output creation, part 1.
We're not allowed to command_fail() once we've started json_success. That's OK, because encoding a known output can only fail if something is badly, badly wrong. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
7aa8ffa2a0
commit
5b82271187
@@ -842,9 +842,9 @@ static const struct json_command listaddrs_command = {
|
||||
};
|
||||
AUTODATA(json_command, &listaddrs_command);
|
||||
|
||||
static struct command_result *json_outputs(struct command *cmd,
|
||||
struct json_stream *response,
|
||||
struct utxo **utxos)
|
||||
static void json_add_utxos(struct command *cmd,
|
||||
struct json_stream *response,
|
||||
struct utxo **utxos)
|
||||
{
|
||||
char* out;
|
||||
struct pubkey funding_pubkey;
|
||||
@@ -864,16 +864,27 @@ static struct command_result *json_outputs(struct command *cmd,
|
||||
&funding_pubkey,
|
||||
utxos[i]->is_p2sh,
|
||||
NULL);
|
||||
if (!out) {
|
||||
return command_fail(cmd, LIGHTNINGD,
|
||||
"p2wpkh address encoding failure.");
|
||||
}
|
||||
json_add_string(response, "address", out);
|
||||
if (!out)
|
||||
log_broken(cmd->ld->log,
|
||||
"Could not encode utxo %s:%u!",
|
||||
type_to_string(tmpctx,
|
||||
struct bitcoin_txid,
|
||||
&utxos[i]->txid),
|
||||
utxos[i]->outnum);
|
||||
else
|
||||
json_add_string(response, "address", out);
|
||||
} else if (utxos[i]->scriptPubkey != NULL) {
|
||||
out = encode_scriptpubkey_to_addr(
|
||||
cmd, chainparams,
|
||||
utxos[i]->scriptPubkey);
|
||||
if (out)
|
||||
if (!out)
|
||||
log_broken(cmd->ld->log,
|
||||
"Could not encode utxo %s:%u!",
|
||||
type_to_string(tmpctx,
|
||||
struct bitcoin_txid,
|
||||
&utxos[i]->txid),
|
||||
utxos[i]->outnum);
|
||||
else
|
||||
json_add_string(response, "address", out);
|
||||
}
|
||||
|
||||
@@ -889,8 +900,6 @@ static struct command_result *json_outputs(struct command *cmd,
|
||||
utxos[i]->status == output_state_reserved);
|
||||
json_object_end(response);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static struct command_result *json_listfunds(struct command *cmd,
|
||||
@@ -901,7 +910,6 @@ static struct command_result *json_listfunds(struct command *cmd,
|
||||
struct json_stream *response;
|
||||
struct peer *p;
|
||||
struct utxo **utxos, **reserved_utxos;
|
||||
struct command_result *ret;
|
||||
|
||||
if (!param(cmd, buffer, params, NULL))
|
||||
return command_param_failed();
|
||||
@@ -911,12 +919,8 @@ static struct command_result *json_listfunds(struct command *cmd,
|
||||
utxos = wallet_get_utxos(cmd, cmd->ld->wallet, output_state_available);
|
||||
reserved_utxos = wallet_get_utxos(cmd, cmd->ld->wallet, output_state_reserved);
|
||||
json_array_start(response, "outputs");
|
||||
ret = json_outputs(cmd, response, utxos);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = json_outputs(cmd, response, reserved_utxos);
|
||||
if (ret)
|
||||
return ret;
|
||||
json_add_utxos(cmd, response, utxos);
|
||||
json_add_utxos(cmd, response, reserved_utxos);
|
||||
json_array_end(response);
|
||||
|
||||
/* Add funds that are allocated to channels */
|
||||
|
||||
Reference in New Issue
Block a user