From 2638947ddc70db20673a792d5cf863f60bc7197e Mon Sep 17 00:00:00 2001 From: darosior Date: Tue, 1 Oct 2019 22:16:58 +0200 Subject: [PATCH] gossipd: query_scid: respond with complete to 0 on wrong chain_hash --- gossipd/queries.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gossipd/queries.c b/gossipd/queries.c index e353ca74e..188a1198b 100644 --- a/gossipd/queries.c +++ b/gossipd/queries.c @@ -255,18 +255,25 @@ const u8 *handle_query_short_channel_ids(struct peer *peer, const u8 *msg) } else flags = NULL; + /* BOLT #7 + * + * The receiver: + * ... + * - if does not maintain up-to-date channel information for `chain_hash`: + * - MUST set `complete` to 0. + */ if (!bitcoin_blkid_eq(&peer->daemon->chain_hash, &chain)) { status_debug("%s sent query_short_channel_ids chainhash %s", type_to_string(tmpctx, struct node_id, &peer->id), type_to_string(tmpctx, struct bitcoin_blkid, &chain)); - return NULL; + return towire_reply_short_channel_ids_end(peer, &chain, 0); } /* BOLT #7: * * - if it has not sent `reply_short_channel_ids_end` to a * previously received `query_short_channel_ids` from this - * sender: + * sender: * - MAY fail the connection. */ if (peer->scid_queries || peer->scid_query_nodes) {