diff --git a/lightningd/channel.c b/lightningd/channel.c index 94ff06c7b..6d27be037 100644 --- a/lightningd/channel.c +++ b/lightningd/channel.c @@ -322,6 +322,7 @@ struct channel *new_unsaved_channel(struct peer *peer, /* Nothing happened yet */ memset(&channel->stats, 0, sizeof(channel->stats)); channel->state_changes = tal_arr(channel, struct channel_state_change *, 0); + channel->replied_to_announcement_sigs = false; /* No shachain yet */ channel->their_shachain.id = 0; @@ -632,6 +633,7 @@ struct channel *new_channel(struct peer *peer, u64 dbid, channel->num_onchain_spent_calls = 0; channel->stats = *stats; channel->state_changes = tal_steal(channel, state_changes); + channel->replied_to_announcement_sigs = false; /* Populate channel->channel_gossip */ channel_gossip_init(channel, take(peer_update)); diff --git a/lightningd/channel.h b/lightningd/channel.h index 94de5c8b8..53c28be30 100644 --- a/lightningd/channel.h +++ b/lightningd/channel.h @@ -353,6 +353,9 @@ struct channel { /* Our change history. */ struct channel_state_change **state_changes; + + /* Have we replied to announcement_signatures once? */ + bool replied_to_announcement_sigs; }; /* Is channel owned (and should be talking to peer) */ diff --git a/lightningd/channel_gossip.c b/lightningd/channel_gossip.c index 76a503c98..0cfb8935c 100644 --- a/lightningd/channel_gossip.c +++ b/lightningd/channel_gossip.c @@ -688,7 +688,10 @@ void channel_gossip_got_announcement_sigs(struct channel *channel, * - MUST respond with its own `announcement_signatures` * message. */ - send_channel_announce_sigs(channel); + if(!channel->replied_to_announcement_sigs) { + send_channel_announce_sigs(channel); + channel->replied_to_announcement_sigs = true; + } check_channel_gossip(channel); return; }