Skip to content

Commit 69ca854

Browse files
committed
Define core::ops::BitOr for Features<T>
The `lightning-custom-message` crate will need access to Features::or in order combine features of a composite handler. Expose this via a core::ops::BitOr implementation.
1 parent a332bfc commit 69ca854

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

lightning/src/ln/features.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,8 +401,10 @@ pub struct Features<T: sealed::Context> {
401401
mark: PhantomData<T>,
402402
}
403403

404-
impl <T: sealed::Context> Features<T> {
405-
pub(crate) fn or(mut self, o: Self) -> Self {
404+
impl<T: sealed::Context> core::ops::BitOr for Features<T> {
405+
type Output = Self;
406+
407+
fn bitor(mut self, o: Self) -> Self {
406408
let total_feature_len = cmp::max(self.flags.len(), o.flags.len());
407409
self.flags.resize(total_feature_len, 0u8);
408410
for (byte, o_byte) in self.flags.iter_mut().zip(o.flags.iter()) {

lightning/src/ln/msgs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1491,7 +1491,7 @@ impl Readable for Init {
14911491
(3, remote_network_address, option)
14921492
});
14931493
Ok(Init {
1494-
features: features.or(global_features),
1494+
features: features | global_features,
14951495
remote_network_address,
14961496
})
14971497
}

lightning/src/ln/peer_handler.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,8 +1191,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
11911191
peer.set_their_node_id(their_node_id);
11921192
insert_node_id!();
11931193
let features = self.message_handler.chan_handler.provided_init_features(&their_node_id)
1194-
.or(self.message_handler.route_handler.provided_init_features(&their_node_id))
1195-
.or(self.message_handler.onion_message_handler.provided_init_features(&their_node_id));
1194+
| self.message_handler.route_handler.provided_init_features(&their_node_id)
1195+
| self.message_handler.onion_message_handler.provided_init_features(&their_node_id);
11961196
let resp = msgs::Init { features, remote_network_address: filter_addresses(peer.their_net_address.clone()) };
11971197
self.enqueue_message(peer, &resp);
11981198
peer.awaiting_pong_timer_tick_intervals = 0;
@@ -1205,8 +1205,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
12051205
peer.set_their_node_id(their_node_id);
12061206
insert_node_id!();
12071207
let features = self.message_handler.chan_handler.provided_init_features(&their_node_id)
1208-
.or(self.message_handler.route_handler.provided_init_features(&their_node_id))
1209-
.or(self.message_handler.onion_message_handler.provided_init_features(&their_node_id));
1208+
| self.message_handler.route_handler.provided_init_features(&their_node_id)
1209+
| self.message_handler.onion_message_handler.provided_init_features(&their_node_id);
12101210
let resp = msgs::Init { features, remote_network_address: filter_addresses(peer.their_net_address.clone()) };
12111211
self.enqueue_message(peer, &resp);
12121212
peer.awaiting_pong_timer_tick_intervals = 0;
@@ -2147,8 +2147,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
21472147
addresses.sort_by_key(|addr| addr.get_id());
21482148

21492149
let features = self.message_handler.chan_handler.provided_node_features()
2150-
.or(self.message_handler.route_handler.provided_node_features())
2151-
.or(self.message_handler.onion_message_handler.provided_node_features());
2150+
| self.message_handler.route_handler.provided_node_features()
2151+
| self.message_handler.onion_message_handler.provided_node_features();
21522152
let announcement = msgs::UnsignedNodeAnnouncement {
21532153
features,
21542154
timestamp: self.last_node_announcement_serial.fetch_add(1, Ordering::AcqRel),

0 commit comments

Comments
 (0)