core-lightning/lightningd
niftynei 2dda526d86 fix: dont send blockheight updates if we're still syncing
At cold start, if your node is behind the blocktip and you've sent your
peer a blockheight counter from the future, we shouldn't confuse ourselves
with our rollback/replay.

Should fix flakes in CI that were spotting BROKEN blockheight updates.
Logs below from a previuos CI fail (edited for relative clarity)

The one that sasy "{ SENT_ADD_ACK_REVOCATION:111 }, our current 108` is
the tell; the last line is the node finally catching up to the tip.

In the test we get into this state by stopping and restarting the node.

```
2023-07-22T11:24:28.2754533Z lightningd-1 2023-07-22T11:19:34.188Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-chan#2: Already have funding locked in
2023-07-22T11:24:28.2755486Z lightningd-1 2023-07-22T11:19:34.188Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-chan#2: attempting update blockheight a5b23dff5177badd6df725c
efeb83ceccbfc52dc64a16b38894a41f0ad8fa181
2023-07-22T11:24:28.2755778Z lightningd-1 2023-07-22T11:19:34.188Z DEBUG   lightningd: update_blockheight: height = 108
2023-07-22T11:24:28.2766210Z lightningd-1 2023-07-22T11:19:34.210Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: init LOCAL: remote_per_commit = 029563e7c898
5d8b95bdfe19e47e494bb8ec8d53ff4edb93f156be57667bfee8c9, old_remote_per_commit = 02bf3117c149d324361f0b418db8984b1e29af70c773eb2865a41ff7f583c7c9ed next_idx_local = 3 next_idx_remote = 3 revocations_recei
ved = 2 feerates { SENT_ADD_ACK_REVOCATION:3750 } range 253-150000 blockheights { SENT_ADD_ACK_REVOCATION:111 }, our current 108
2023-07-22T11:24:28.2768866Z lightningd-1 2023-07-22T11:19:34.211Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: peer_out WIRE_CHANNEL_REESTABLISH
2023-07-22T11:24:28.2769416Z lightningd-1 2023-07-22T11:19:34.211Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: billboard: Sent reestablish, waiting for the
irs
2023-07-22T11:24:28.2771115Z lightningd-1 2023-07-22T11:19:34.212Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: peer_in WIRE_CHANNEL_REESTABLISH
2023-07-22T11:24:28.2774150Z lightningd-1 2023-07-22T11:19:34.212Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: Got reestablish commit=3 revoke=2
2023-07-22T11:24:28.2776056Z lightningd-1 2023-07-22T11:19:34.212Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: next_revocation_number = 2
2023-07-22T11:24:28.2805639Z lightningd-1 2023-07-22T11:19:34.239Z **BROKEN** 022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: current blockheight 108 less than last 111
2023-07-22T11:24:28.2823960Z lightningd-1 2023-07-22T11:19:34.240Z DEBUG   lightningd: Adding block 109: 5f67b6e110eb3c3457bea4fcf0d04ce9be90efeee5df8e083ed4266074ca911f
2023-07-22T11:24:28.2833154Z lightningd-1 2023-07-22T11:19:34.251Z **BROKEN** 022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: current blockheight 108 less than last 111
2023-07-22T11:24:28.2833630Z lightningd-1 2023-07-22T11:19:34.252Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: Trying commit
2023-07-22T11:24:28.2834165Z lightningd-1 2023-07-22T11:19:34.252Z **BROKEN** 022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: current blockheight 108 less than last 111
2023-07-22T11:24:28.2835070Z lightningd-1 2023-07-22T11:19:34.252Z DEBUG   022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59-channeld-chan#2: Can't send commit: nothing to send, feechange not wanted ({ SENT_ADD_ACK_REVOCATION:3750 }) blockheight not wanted ({ SENT_ADD_ACK_REVOCATION:111 })
2023-07-22T11:24:28.2835516Z lightningd-1 2023-07-22T11:19:34.350Z DEBUG   lightningd: Adding block 110: 5f43f3ac9d808e3a309720d1b0727a00d5a3d3ddca71d97401e233637e87639c
2023-07-22T11:24:28.2835962Z lightningd-1 2023-07-22T11:19:34.476Z DEBUG   lightningd: Adding block 111: 55b0d1e0a08ff6233e186e6735cb1cbec33e2b0a6e7d08f2622e8c1db30b54b9
```
2023-07-25 10:49:34 +09:30
..
test listinvoices: add limit param. 2023-07-23 13:48:37 +09:30
.gitignore Ignore all the deamon inside the git history 2021-10-28 15:51:38 +02:00
anchorspend.c Support p2tr deposit addresses 2023-07-11 11:41:15 +09:30
anchorspend.h lightningd: code to spend anchor outputs if we want to boost commitment tx. 2023-06-29 11:28:47 -04:00
bitcoind.c lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
bitcoind.h lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
chaintopology.c lightningd: don't override fee limits in feerate_min/max, do so in callers. 2023-07-22 13:11:08 +09:30
chaintopology.h lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
channel.c lightningd: put ignore_fee_limits bool into channel struct. 2023-07-22 13:11:08 +09:30
channel.h lightningd: put ignore_fee_limits bool into channel struct. 2023-07-22 13:11:08 +09:30
channel_control.c fix: dont send blockheight updates if we're still syncing 2023-07-25 10:49:34 +09:30
channel_control.h lightningd: setchannel can set ignorefeelimits. 2023-07-22 13:11:08 +09:30
channel_state.h wallet: make it clear that enum state_change is in db. 2023-03-25 15:28:02 +10:30
closed_channel.c lightningd: add listclosedchannels command. 2023-03-25 15:28:02 +10:30
closed_channel.h lightningd: add listclosedchannels command. 2023-03-25 15:28:02 +10:30
closing_control.c lightningd: don't override fee limits in feerate_min/max, do so in callers. 2023-07-22 13:11:08 +09:30
closing_control.h lightningd: trace JSON id prefixes through sendrawtx. 2022-09-16 12:31:45 +09:30
coin_mvts.c lightningd: use hash map for peers instead of linked list. 2023-01-21 08:05:31 -06:00
coin_mvts.h coin_mvt: tiny, dont import lightningd header 2022-02-07 13:02:09 +10:30
configs.c lightningd: remove deprecated_apis global, put into lightningd. 2023-07-09 16:49:48 +09:30
connect_control.c lightningd: remove deprecated_apis global, put into lightningd. 2023-07-09 16:49:48 +09:30
connect_control.h lightningd: tell connectd we're shutting down. 2023-02-05 20:40:47 +01:00
datastore.c lightningd: unescape JSON strings for db. 2023-02-11 12:22:40 -06:00
dual_open_control.c Support p2tr deposit addresses 2023-07-11 11:41:15 +09:30
dual_open_control.h lightningd: prepare internal json routines for listpeerchannels. 2023-01-13 10:42:42 +10:30
feerate.c lightningd: remove deprecated_apis global, put into lightningd. 2023-07-09 16:49:48 +09:30
feerate.h lightningd: clean up feerate handling, deprecate old terms. 2023-04-10 07:31:12 +09:30
gossip_control.c cleanup: rename json_add_amount_msat_only to json_add_amount_msat 2023-03-18 15:55:49 +10:30
gossip_control.h gossipd: batch outpoints spent, add block height. 2022-09-24 15:22:27 +09:30
hsm_control.c lightningd: turn on experimental support for zero-fee htlc anchors. 2023-06-29 11:28:47 -04:00
hsm_control.h lightningd: create small hsm_sync_req() helper for hsm queries. 2023-04-10 17:26:47 +09:30
htlc_end.c channeld: don't calculate blinding shared secret, let lightningd do it. 2022-10-26 11:29:06 +10:30
htlc_end.h channeld: don't calculate blinding shared secret, let lightningd do it. 2022-10-26 11:29:06 +10:30
htlc_set.c Makefile: update bolts a0bbe47b0278b4f152dbaa4f5fab2562413a217c 2023-04-07 21:22:56 +09:30
htlc_set.h Makefile: use completely separate spec-derived files for EXPERIMENTAL_FEATURES 2020-09-08 09:42:00 +09:30
invoice.c lightningd: expose created_index and updated_index fields. 2023-07-23 13:48:37 +09:30
invoice.h lightningd: expose created_index and updated_index fields. 2023-07-23 13:48:37 +09:30
io_loop_with_timers.c database: pull out database code into a new module 2022-03-05 15:03:34 +10:30
io_loop_with_timers.h lightningd/io_loop_with_timers.c: Move mainloop to its own source file, have chaintopology use it. 2019-05-31 17:57:10 +02:00
jsonrpc.c lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
jsonrpc.h lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
lightningd.c wait: new command to wait on indexes. 2023-07-23 13:48:37 +09:30
lightningd.h wait: new command to wait on indexes. 2023-07-23 13:48:37 +09:30
log.c lightningd: fix up log filtering for generic daemons (e.g. connectd). 2023-07-19 19:13:57 +09:30
log.h lightningd: have opt_log_level take the log_book. 2023-07-19 19:13:57 +09:30
log_status.c lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
log_status.h lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
Makefile wait: new command to wait on indexes. 2023-07-23 13:48:37 +09:30
memdump.c lightningd: fix parent reporting for memleaks. 2023-04-10 17:26:47 +09:30
memdump.h lightningd: simplify memleak code. 2022-03-10 09:40:09 +10:30
notification.c plugins: fix shutdown notification to contain object. 2023-07-13 18:59:37 +09:30
notification.h jsonrpc: make error codes an enum. 2022-09-19 10:18:55 +09:30
offer.c lightningd: create small hsm_sync_req() helper for hsm queries. 2023-04-10 17:26:47 +09:30
onchain_control.c Support p2tr deposit addresses 2023-07-11 11:41:15 +09:30
onchain_control.h onchaind: remove 'is_replay' logic 2021-12-28 04:42:42 +10:30
onion_message.c common: update to latest onion-message spec. 2023-01-30 13:24:29 +10:30
onion_message.h common: remove support for pre v0.10.2 onionmessages. 2021-12-01 05:44:28 +10:30
opening_common.c lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
opening_common.h lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
opening_control.c lightningd: don't override fee limits in feerate_min/max, do so in callers. 2023-07-22 13:11:08 +09:30
opening_control.h lightningd: prepare internal json routines for listpeerchannels. 2023-01-13 10:42:42 +10:30
options.c lightningd: have opt_log_level take the log_book. 2023-07-19 19:13:57 +09:30
options.h lightningd: move listconfigs into configs.c 2023-06-20 20:08:25 +09:30
pay.c pay: Consider amounts when selecting a channel to send over 2023-07-24 09:05:40 +09:30
pay.h jsonrpc: make error codes an enum. 2022-09-19 10:18:55 +09:30
peer_control.c lightningd: setchannel can set ignorefeelimits. 2023-07-22 13:11:08 +09:30
peer_control.h connectd: fix transient memleak report. 2023-07-22 08:52:55 +09:30
peer_fd.c subdaemons: remove gossipd fd from per-peer daemons. 2022-02-08 11:15:52 +10:30
peer_fd.h subdaemons: remove gossipd fd from per-peer daemons. 2022-02-08 11:15:52 +10:30
peer_htlcs.c lightningd: remove deprecated_apis global, put into lightningd. 2023-07-09 16:49:48 +09:30
peer_htlcs.h lightningd: fix valgrind reported leak when we exit early. 2023-01-17 14:13:45 +10:30
ping.c common: clean up json routine locations. 2022-07-15 12:24:00 -05:00
plugin.c lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
plugin.h lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
plugin_control.c lightningd: wire plugin command JSON id through to plugin commands. 2022-09-16 12:31:45 +09:30
plugin_control.h plugins: add command field to subcommand output. 2021-06-25 09:49:33 +09:30
plugin_hook.c lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
plugin_hook.h plugin: wire JSON id for commands which caused hooks to fire. 2022-09-16 12:31:45 +09:30
routehint.c lightnind: use aliases in routehints for private channels. 2022-08-09 16:31:36 -05:00
routehint.h invoice: overhaul routehints to use topology.listincoming, cleanup. 2021-06-16 10:29:17 +09:30
runes.c lightningd: avoid notleak markers: move global into struct runes. 2023-07-21 16:44:22 +09:30
runes.h lightningd: new runes infrastructure. 2023-07-21 16:44:22 +09:30
signmessage.c lightningd: create small hsm_sync_req() helper for hsm queries. 2023-04-10 17:26:47 +09:30
subd.c lightningd: fix false memleak report (test flake)! 2023-07-24 16:30:31 +02:00
subd.h lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
wait.c wait: new command to wait on indexes. 2023-07-23 13:48:37 +09:30
wait.h wait: new command to wait on indexes. 2023-07-23 13:48:37 +09:30
watch.c lightningd/log: clean up nomenclature. 2023-07-19 19:13:57 +09:30
watch.h Remove names of parameters of callbacks which confuse gcc. 2022-08-31 12:18:28 +03:00