Browse Source

reservation: return FUNDING_STILL_SYNCING_BITCOIN if we might be missing funds.

This is useful, and also makes us pass the testsuite.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
bump-pyln-proto
Rusty Russell 5 years ago
parent
commit
3f57249f08
  1. 28
      wallet/reservation.c

28
wallet/reservation.c

@ -310,19 +310,22 @@ static struct command_result *json_fundpsbt(struct command *cmd,
} }
/* If they said "all", we expect to run out of utxos. */ /* If they said "all", we expect to run out of utxos. */
if (all) { if (all && tal_count(utxos))
/* If we have none at all though, fail */
if (!tal_count(utxos))
return command_fail(cmd, FUND_CANNOT_AFFORD,
"No available UTXOs");
break; break;
}
/* Since it's possible the lack of utxos is because we haven't
* finished syncing yet, report a sync timing error first */
if (!topology_synced(cmd->ld->topology))
return command_fail(cmd,
FUNDING_STILL_SYNCING_BITCOIN,
"Cannot afford: still syncing with bitcoin network...");
return command_fail(cmd, FUND_CANNOT_AFFORD, return command_fail(cmd, FUND_CANNOT_AFFORD,
"Could not afford %s using all %zu available UTXOs: %s short", "Could not afford %s using all %zu available UTXOs: %s short",
type_to_string(tmpctx, all ? "all"
struct amount_sat, : type_to_string(tmpctx,
amount), struct amount_sat,
amount),
tal_count(utxos), tal_count(utxos),
all ? "all" all ? "all"
: type_to_string(tmpctx, : type_to_string(tmpctx,
@ -334,11 +337,16 @@ static struct command_result *json_fundpsbt(struct command *cmd,
/* Anything above 0 is "excess" */ /* Anything above 0 is "excess" */
if (!inputs_sufficient(input, AMOUNT_SAT(0), if (!inputs_sufficient(input, AMOUNT_SAT(0),
*feerate_per_kw, *weight, *feerate_per_kw, *weight,
&diff)) &diff)) {
if (!topology_synced(cmd->ld->topology))
return command_fail(cmd,
FUNDING_STILL_SYNCING_BITCOIN,
"Cannot afford: still syncing with bitcoin network...");
return command_fail(cmd, FUND_CANNOT_AFFORD, return command_fail(cmd, FUND_CANNOT_AFFORD,
"All %zu inputs could not afford" "All %zu inputs could not afford"
" fees", " fees",
tal_count(utxos)); tal_count(utxos));
}
} }
return finish_psbt(cmd, utxos, *feerate_per_kw, *weight, diff, *reserve, return finish_psbt(cmd, utxos, *feerate_per_kw, *weight, diff, *reserve,

Loading…
Cancel
Save