Skip to content

Commit d08e2d3

Browse files
committed
Add send message events for gossip_queries
This change enables initiating gossip queries with a peer using the SendMessageEvent enum. Specifically we add an event for sending query_channel_range to discover the existance of channels and an event for sending query_short_channel_ids to request routing gossip messages for a set of channels. These events are handled inside the process_events method of PeerManager which sends the serialized message to the peer.
1 parent 3220f3b commit d08e2d3

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3404,6 +3404,8 @@ impl<ChanSigner: ChannelKeys, M: Deref + Sync + Send, T: Deref + Sync + Send, K:
34043404
&events::MessageSendEvent::BroadcastChannelUpdate { .. } => true,
34053405
&events::MessageSendEvent::HandleError { ref node_id, .. } => node_id != counterparty_node_id,
34063406
&events::MessageSendEvent::PaymentFailureNetworkUpdate { .. } => true,
3407+
&events::MessageSendEvent::SendChannelRangeQuery { .. } => false,
3408+
&events::MessageSendEvent::SendShortIdsQuery { .. } => false,
34073409
}
34083410
});
34093411
}

lightning/src/ln/peer_handler.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,6 +1131,16 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
11311131
self.do_attempt_write_data(&mut descriptor, peer);
11321132
},
11331133
}
1134+
},
1135+
MessageSendEvent::SendChannelRangeQuery { ref node_id, ref msg } => {
1136+
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {});
1137+
peer.pending_outbound_buffer.push_back(peer.channel_encryptor.encrypt_message(&encode_msg!(msg)));
1138+
self.do_attempt_write_data(&mut descriptor, peer);
1139+
},
1140+
MessageSendEvent::SendShortIdsQuery { ref node_id, ref msg } => {
1141+
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {});
1142+
peer.pending_outbound_buffer.push_back(peer.channel_encryptor.encrypt_message(&encode_msg!(msg)));
1143+
self.do_attempt_write_data(&mut descriptor, peer);
11341144
}
11351145
}
11361146
}

lightning/src/util/events.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,22 @@ pub enum MessageSendEvent {
346346
PaymentFailureNetworkUpdate {
347347
/// The channel/node update which should be sent to NetGraphMsgHandler
348348
update: msgs::HTLCFailChannelUpdate,
349-
}
349+
},
350+
/// Query a peer for channels with funding transaction UTXOs in a block range.
351+
SendChannelRangeQuery {
352+
/// The node_id of the node which should receive this message.
353+
node_id: PublicKey,
354+
/// The query_channel_range which should be sent.
355+
msg: msgs::QueryChannelRange,
356+
},
357+
/// Request routing gossip messages from a peer for a list of channels identified by
358+
/// their short_channel_ids.
359+
SendShortIdsQuery {
360+
/// The node_id of the node which should receive this message.
361+
node_id: PublicKey,
362+
/// The query_short_channel_ids which should be sent.
363+
msg: msgs::QueryShortChannelIds,
364+
},
350365
}
351366

352367
/// A trait indicating an object may generate message send events

0 commit comments

Comments
 (0)