Browse Source

gossipd: fix case where we get an update on a pruned channel.

We discarded it; we should populate it.  The comment is wrong, since
local_add_channel() doesn't add public channels, and we test that above.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ppa-0.6.1
Rusty Russell 7 years ago
committed by Christian Decker
parent
commit
1e4959af1f
  1. 18
      gossipd/routing.c

18
gossipd/routing.c

@ -892,21 +892,19 @@ void handle_channel_update(struct routing_state *rstate, const u8 *update)
c = chan->connections[direction];
/* When we local_add_channel(), we only half-populate, so this case
* is possible. */
/* Channel could have been pruned: re-add */
if (!c) {
SUPERVERBOSE("Ignoring update for unknown half channel %s",
type_to_string(trc, struct short_channel_id,
&short_channel_id));
c = new_node_connection(rstate, chan,
chan->nodes[direction],
chan->nodes[!direction],
direction);
} else if (c->last_timestamp >= timestamp) {
SUPERVERBOSE("Ignoring outdated update.");
tal_free(tmpctx);
return;
}
if (c->last_timestamp >= timestamp) {
SUPERVERBOSE("Ignoring outdated update.");
tal_free(tmpctx);
return;
} else if (!check_channel_update(&c->src->id, &signature, serialized)) {
if (!check_channel_update(&c->src->id, &signature, serialized)) {
status_trace("Signature verification failed.");
tal_free(tmpctx);
return;

Loading…
Cancel
Save