From 899ec2b3d4be5b14777cb8d16d642e9db0e8b91a Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 14 Jul 2020 15:57:50 +0930 Subject: [PATCH] JSON API: fix up two existing warnings to be conformant. Technically an API break, but nobody relies on these I hope! Note that the feerates warning was buried inside the style object: it should be top-level. Signed-off-by: Rusty Russell --- lightningd/chaintopology.c | 10 ++++++---- plugins/libplugin-pay.c | 2 +- tests/test_misc.py | 10 +++++----- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lightningd/chaintopology.c b/lightningd/chaintopology.c index 4cc46486e..5eb725917 100644 --- a/lightningd/chaintopology.c +++ b/lightningd/chaintopology.c @@ -490,6 +490,11 @@ static struct command_result *json_feerates(struct command *cmd, } response = json_stream_success(cmd); + + if (missing) + json_add_string(response, "warning_missing_feerates", + "Some fee estimates unavailable: bitcoind startup?"); + json_object_start(response, feerate_style_name(*style)); for (size_t i = 0; i < ARRAY_SIZE(feerates); i++) { if (!feerates[i] || i == FEERATE_MIN || i == FEERATE_MAX) @@ -520,10 +525,7 @@ static struct command_result *json_feerates(struct command *cmd, json_object_end(response); - if (missing) - json_add_string(response, "warning", - "Some fee estimates unavailable: bitcoind startup?"); - else { + if (!missing) { json_object_start(response, "onchain_fee_estimates"); /* eg 020000000001016f51de645a47baa49a636b8ec974c28bdff0ac9151c0f4eda2dbe3b41dbe711d000000001716001401fad90abcd66697e2592164722de4a95ebee165ffffffff0240420f00000000002200205b8cd3b914cf67cdd8fa6273c930353dd36476734fbd962102c2df53b90880cdb73f890000000000160014c2ccab171c2a5be9dab52ec41b825863024c54660248304502210088f65e054dbc2d8f679de3e40150069854863efa4a45103b2bb63d060322f94702200d3ae8923924a458cffb0b7360179790830027bb6b29715ba03e12fc22365de1012103d745445c9362665f22e0d96e9e766f273f3260dea39c8a76bfa05dd2684ddccf00000000 == weight 702 */ json_add_num(response, "opening_channel_satoshis", diff --git a/plugins/libplugin-pay.c b/plugins/libplugin-pay.c index c9b8ff92b..cf6d31113 100644 --- a/plugins/libplugin-pay.c +++ b/plugins/libplugin-pay.c @@ -1076,7 +1076,7 @@ static void payment_finished(struct payment *p) if (result.leafstates != PAYMENT_STEP_SUCCESS) json_add_string( - ret, "warning", + ret, "warning_partial_completion", "Some parts of the payment are not yet " "completed, but we have the confirmation " "from the recipient."); diff --git a/tests/test_misc.py b/tests/test_misc.py index 2f201addb..e9ac8a945 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -1458,7 +1458,7 @@ def test_feerates(node_factory): # Query feerates (shouldn't give any!) wait_for(lambda: len(l1.rpc.feerates('perkw')['perkw']) == 2) feerates = l1.rpc.feerates('perkw') - assert feerates['warning'] == 'Some fee estimates unavailable: bitcoind startup?' + assert feerates['warning_missing_feerates'] == 'Some fee estimates unavailable: bitcoind startup?' assert 'perkb' not in feerates assert feerates['perkw']['max_acceptable'] == 2**32 - 1 assert feerates['perkw']['min_acceptable'] == 253 @@ -1467,7 +1467,7 @@ def test_feerates(node_factory): wait_for(lambda: len(l1.rpc.feerates('perkb')['perkb']) == 2) feerates = l1.rpc.feerates('perkb') - assert feerates['warning'] == 'Some fee estimates unavailable: bitcoind startup?' + assert feerates['warning_missing_feerates'] == 'Some fee estimates unavailable: bitcoind startup?' assert 'perkw' not in feerates assert feerates['perkb']['max_acceptable'] == (2**32 - 1) assert feerates['perkb']['min_acceptable'] == 253 * 4 @@ -1480,7 +1480,7 @@ def test_feerates(node_factory): wait_for(lambda: len(l1.rpc.feerates('perkw')['perkw']) == 3) feerates = l1.rpc.feerates('perkw') assert feerates['perkw']['unilateral_close'] == 15000 - assert feerates['warning'] == 'Some fee estimates unavailable: bitcoind startup?' + assert feerates['warning_missing_feerates'] == 'Some fee estimates unavailable: bitcoind startup?' assert 'perkb' not in feerates assert feerates['perkw']['max_acceptable'] == 15000 * 10 assert feerates['perkw']['min_acceptable'] == 253 @@ -1492,7 +1492,7 @@ def test_feerates(node_factory): assert feerates['perkw']['unilateral_close'] == 15000 assert feerates['perkw']['htlc_resolution'] == 11000 assert feerates['perkw']['penalty'] == 11000 - assert feerates['warning'] == 'Some fee estimates unavailable: bitcoind startup?' + assert feerates['warning_missing_feerates'] == 'Some fee estimates unavailable: bitcoind startup?' assert 'perkb' not in feerates assert feerates['perkw']['max_acceptable'] == 15000 * 10 assert feerates['perkw']['min_acceptable'] == 253 @@ -1507,7 +1507,7 @@ def test_feerates(node_factory): for t in types: if t not in ("unilateral_close", "htlc_resolution", "penalty"): assert feerates['perkb'][t] == 25000 - assert feerates['warning'] == 'Some fee estimates unavailable: bitcoind startup?' + assert feerates['warning_missing_feerates'] == 'Some fee estimates unavailable: bitcoind startup?' assert 'perkw' not in feerates assert feerates['perkb']['max_acceptable'] == 15000 * 4 * 10 assert feerates['perkb']['min_acceptable'] == 253 * 4