mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
gossipd: apply private updates to announce channel.
We trade channel_update before channel_announce makes the channel public, and currently forget them when we finally get the channel_announce. We should instead apply them, and not rely on retransmission (which we remove in the next patch!). This earlier channel_update means test_gossip_jsonrpc triggers too early, so have that wait for node_announcement. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -753,11 +753,16 @@ bool routing_add_channel_announcement(struct routing_state *rstate,
|
|||||||
/* Channel is now public. */
|
/* Channel is now public. */
|
||||||
chan->channel_announce = tal_dup_arr(chan, u8, msg, tal_count(msg), 0);
|
chan->channel_announce = tal_dup_arr(chan, u8, msg, tal_count(msg), 0);
|
||||||
|
|
||||||
/* Clear any private updates: new updates will trigger broadcast of
|
/* Apply any private updates. */
|
||||||
* this channel_announce. */
|
for (size_t i = 0; i < ARRAY_SIZE(chan->half); i++) {
|
||||||
for (size_t i = 0; i < ARRAY_SIZE(chan->half); i++)
|
const u8 *update = chan->half[i].channel_update;
|
||||||
chan->half[i].channel_update
|
if (!update)
|
||||||
= tal_free(chan->half[i].channel_update);
|
continue;
|
||||||
|
|
||||||
|
/* Remove from channel, otherwise it will be freed! */
|
||||||
|
chan->half[i].channel_update = NULL;
|
||||||
|
routing_add_channel_update(rstate, take(update));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -282,7 +282,7 @@ def test_gossip_jsonrpc(node_factory):
|
|||||||
'peer_in WIRE_ANNOUNCEMENT_SIGNATURES'])
|
'peer_in WIRE_ANNOUNCEMENT_SIGNATURES'])
|
||||||
|
|
||||||
# Just wait for the update to kick off and then check the effect
|
# Just wait for the update to kick off and then check the effect
|
||||||
needle = "Received channel_update for channel"
|
needle = "Received node_announcement for node"
|
||||||
l1.daemon.wait_for_log(needle)
|
l1.daemon.wait_for_log(needle)
|
||||||
l2.daemon.wait_for_log(needle)
|
l2.daemon.wait_for_log(needle)
|
||||||
# Need to increase timeout, intervals cannot be shortened with DEVELOPER=0
|
# Need to increase timeout, intervals cannot be shortened with DEVELOPER=0
|
||||||
|
|||||||
Reference in New Issue
Block a user