gossipd: be more verbose and less assert()ive on bad node_announcement.

We hit the timestamp assert on #2750; it shouldn't happen, but crashing
doesn't leave much information.

Reported-by: @m-schmook
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2019-06-20 12:25:52 +09:30
parent 9bf0467967
commit fc27250f80

View File

@ -485,8 +485,18 @@ static bool get_node_announcement(const tal_t *ctx,
n->bcast.index, tal_hex(tmpctx, msg));
return false;
}
assert(node_id_eq(&id, &n->id));
assert(timestamp == n->bcast.timestamp);
if (!node_id_eq(&id, &n->id) || timestamp != n->bcast.timestamp) {
status_broken("Wrong node_announcement @%u:"
" expected %s timestamp %u "
" got %s timestamp %u",
n->bcast.index,
type_to_string(tmpctx, struct node_id, &n->id),
timestamp,
type_to_string(tmpctx, struct node_id, &id),
n->bcast.timestamp);
return false;
}
*wireaddrs = read_addresses(ctx, addresses);
tal_free(addresses);