connectd: don't suppress channel_announcement without channel_update yet.

This happens if:
1. The peer sets a timestamp filter to non-zero, and
2. We have a channel_announcement without a channel_update.

The timestamp is 0 as a placeholder as part of the recent gossip rework
(we used to hold these channel_announcement in memory, which was complex).

But this means we won't send it in this case, and if we later send the
channel_update, CI will complain about 'Bad gossip order'.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2024-02-12 11:41:47 +10:30 committed by Christian Decker
parent a0ed61199a
commit e7f1f29dbd
1 changed files with 4 additions and 2 deletions

View File

@ -138,8 +138,10 @@ u8 *gossip_store_next(const tal_t *ctx,
/* Skip any timestamp filtered */
timestamp = be32_to_cpu(hdr.timestamp);
if (!timestamp_filter(timestamp_min, timestamp_max,
timestamp)) {
/* Note: channel_announcements without a channel_update yet
* will have 0 timestamp (we don't know). Better to send them. */
if (timestamp &&
!timestamp_filter(timestamp_min, timestamp_max, timestamp)) {
*off += r + msglen;
continue;
}