Skip to content

Commit

Permalink
common: make gossmap ignore redundant channel_announcements.
Browse files Browse the repository at this point in the history
This seems to be happening to some people, so don't panic.  Unfortunately we don't have
a good error callback here, so msg to stderr.

Fixes: #7249
Signed-off-by: Rusty Russell <[email protected]>
  • Loading branch information
rustyrussell authored and vincenzopalazzo committed May 23, 2024
1 parent 744116e commit 6b91497
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions common/gossmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -458,9 +458,16 @@ static struct gossmap_chan *add_channel(struct gossmap *map,
map_nodeid(map, cannounce_off + plus_scid_off + 8, &node_id[0]);
map_nodeid(map, cannounce_off + plus_scid_off + 8 + PUBKEY_CMPR_LEN, &node_id[1]);

/* We 1should not get duplicates. */
/* We should not get duplicates. */
scid.u64 = map_be64(map, cannounce_off + plus_scid_off);
assert(!gossmap_find_chan(map, &scid));
chan = gossmap_find_chan(map, &scid);
if (chan) {
/* FIXME: Report this better! */
warnx("gossmap: redundant channel_announce for %s, offsets %u and %zu!",
fmt_short_channel_id(tmpctx, scid),
chan->cann_off, cannounce_off);
return NULL;
}

/* We carefully map pointers to indexes, since new_node can move them! */
n[0] = gossmap_find_node(map, &node_id[0]);
Expand Down

0 comments on commit 6b91497

Please sign in to comment.