Skip to content

Commit 687e587

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 818dbdf commit 687e587

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
@@ -422,8 +422,10 @@ pub struct Features<T: sealed::Context> {
422422
mark: PhantomData<T>,
423423
}
424424

425-
impl <T: sealed::Context> Features<T> {
426-
pub(crate) fn or(mut self, o: Self) -> Self {
425+
impl<T: sealed::Context> core::ops::BitOr for Features<T> {
426+
type Output = Self;
427+
428+
fn bitor(mut self, o: Self) -> Self {
427429
let total_feature_len = cmp::max(self.flags.len(), o.flags.len());
428430
self.flags.resize(total_feature_len, 0u8);
429431
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
@@ -1392,7 +1392,7 @@ impl Readable for Init {
13921392
(3, remote_network_address, option)
13931393
});
13941394
Ok(Init {
1395-
features: features.or(global_features),
1395+
features: features | global_features,
13961396
remote_network_address,
13971397
})
13981398
}

lightning/src/ln/peer_handler.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,8 +1246,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
12461246
peer.set_their_node_id(their_node_id);
12471247
insert_node_id!();
12481248
let features = self.message_handler.chan_handler.provided_init_features(&their_node_id)
1249-
.or(self.message_handler.route_handler.provided_init_features(&their_node_id))
1250-
.or(self.message_handler.onion_message_handler.provided_init_features(&their_node_id));
1249+
| self.message_handler.route_handler.provided_init_features(&their_node_id)
1250+
| self.message_handler.onion_message_handler.provided_init_features(&their_node_id);
12511251
let resp = msgs::Init { features, remote_network_address: filter_addresses(peer.their_net_address.clone()) };
12521252
self.enqueue_message(peer, &resp);
12531253
peer.awaiting_pong_timer_tick_intervals = 0;
@@ -1260,8 +1260,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
12601260
peer.set_their_node_id(their_node_id);
12611261
insert_node_id!();
12621262
let features = self.message_handler.chan_handler.provided_init_features(&their_node_id)
1263-
.or(self.message_handler.route_handler.provided_init_features(&their_node_id))
1264-
.or(self.message_handler.onion_message_handler.provided_init_features(&their_node_id));
1263+
| self.message_handler.route_handler.provided_init_features(&their_node_id)
1264+
| self.message_handler.onion_message_handler.provided_init_features(&their_node_id);
12651265
let resp = msgs::Init { features, remote_network_address: filter_addresses(peer.their_net_address.clone()) };
12661266
self.enqueue_message(peer, &resp);
12671267
peer.awaiting_pong_timer_tick_intervals = 0;
@@ -2202,8 +2202,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
22022202
addresses.sort_by_key(|addr| addr.get_id());
22032203

22042204
let features = self.message_handler.chan_handler.provided_node_features()
2205-
.or(self.message_handler.route_handler.provided_node_features())
2206-
.or(self.message_handler.onion_message_handler.provided_node_features());
2205+
| self.message_handler.route_handler.provided_node_features()
2206+
| self.message_handler.onion_message_handler.provided_node_features();
22072207
let announcement = msgs::UnsignedNodeAnnouncement {
22082208
features,
22092209
timestamp: self.last_node_announcement_serial.fetch_add(1, Ordering::AcqRel),

0 commit comments

Comments
 (0)