Skip to content

Commit d923d54

Browse files
Conditionally advertise OM support in InitFeatures
Based on whether the PeerManager's OnionMessageHandler supports forwarding
1 parent ea26d78 commit d923d54

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

lightning/src/ln/features.rs

+6
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,12 @@ impl InitFeatures {
548548
pub(crate) fn to_context<C: sealed::Context>(&self) -> Features<C> {
549549
self.to_context_internal()
550550
}
551+
552+
pub(crate) fn known_without_onion_messages() -> Self {
553+
let mut features = Self::known();
554+
features.flags[4] &= 0b00111111;
555+
features
556+
}
551557
}
552558

553559
impl NodeFeatures {

lightning/src/ln/peer_handler.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -1033,7 +1033,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
10331033

10341034
peer.their_node_id = Some(their_node_id);
10351035
insert_node_id!();
1036-
let features = InitFeatures::known();
1036+
let features = if self.message_handler.onion_message_handler.supports_onion_message_forwarding()
1037+
{ InitFeatures::known() } else { InitFeatures::known_without_onion_messages() };
10371038
let resp = msgs::Init { features, remote_network_address: filter_addresses(peer.their_net_address.clone()) };
10381039
self.enqueue_message(peer, &resp);
10391040
peer.awaiting_pong_timer_tick_intervals = 0;
@@ -1045,7 +1046,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
10451046
peer.pending_read_is_header = true;
10461047
peer.their_node_id = Some(their_node_id);
10471048
insert_node_id!();
1048-
let features = InitFeatures::known();
1049+
let features = if self.message_handler.onion_message_handler.supports_onion_message_forwarding()
1050+
{ InitFeatures::known() } else { InitFeatures::known_without_onion_messages() };
10491051
let resp = msgs::Init { features, remote_network_address: filter_addresses(peer.their_net_address.clone()) };
10501052
self.enqueue_message(peer, &resp);
10511053
peer.awaiting_pong_timer_tick_intervals = 0;

0 commit comments

Comments
 (0)