Skip to content

Commit a281992

Browse files
committed
Use clear helper on flags copy to mask off bits
1 parent 839db04 commit a281992

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

lightning/src/ln/channel.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ macro_rules! define_state_flags {
296296
#[allow(unused)]
297297
fn set(&mut self, flag: Self) { *self |= flag }
298298
#[allow(unused)]
299-
fn clear(&mut self, flag: Self) { *self &= !flag }
299+
fn clear(&mut self, flag: Self) -> Self { *self &= !flag; *self }
300300
}
301301

302302
$(
@@ -332,7 +332,7 @@ macro_rules! define_state_flags {
332332
#[allow(unused)]
333333
fn $set(&mut self) { self.set($flag_type::new() | $flag) }
334334
#[allow(unused)]
335-
fn $clear(&mut self) { self.clear($flag_type::new() | $flag) }
335+
fn $clear(&mut self) -> Self { self.clear($flag_type::new() | $flag) }
336336
}
337337
};
338338
($flag_type_doc: expr, FUNDED_STATE, $flag_type: ident, $flags: tt) => {
@@ -534,7 +534,7 @@ macro_rules! impl_state_flag {
534534
fn $clear(&mut self) {
535535
match self {
536536
$(
537-
ChannelState::$state(flags) => flags.$clear(),
537+
ChannelState::$state(flags) => { let _ = flags.$clear(); },
538538
)*
539539
_ => debug_assert!(false, "Attempted to clear flag on unexpected ChannelState"),
540540
}
@@ -3135,7 +3135,7 @@ impl<SP: Deref> Channel<SP> where
31353135
let mut check_reconnection = false;
31363136
match &self.context.channel_state {
31373137
ChannelState::AwaitingChannelReady(flags) => {
3138-
let flags = *flags & !FundedStateFlags::ALL;
3138+
let flags = flags.clone().clear(FundedStateFlags::ALL.into());
31393139
debug_assert!(!flags.is_set(AwaitingChannelReadyFlags::OUR_CHANNEL_READY) || !flags.is_set(AwaitingChannelReadyFlags::WAITING_FOR_BATCH));
31403140
if flags & !AwaitingChannelReadyFlags::WAITING_FOR_BATCH == AwaitingChannelReadyFlags::THEIR_CHANNEL_READY {
31413141
// If we reconnected before sending our `channel_ready` they may still resend theirs.
@@ -5255,7 +5255,7 @@ impl<SP: Deref> Channel<SP> where
52555255
if !self.is_awaiting_monitor_update() { return false; }
52565256
if matches!(
52575257
self.context.channel_state, ChannelState::AwaitingChannelReady(flags)
5258-
if (flags & !(AwaitingChannelReadyFlags::THEIR_CHANNEL_READY | FundedStateFlags::PEER_DISCONNECTED | FundedStateFlags::MONITOR_UPDATE_IN_PROGRESS | AwaitingChannelReadyFlags::WAITING_FOR_BATCH)).is_empty()
5258+
if flags.clone().clear(AwaitingChannelReadyFlags::THEIR_CHANNEL_READY | FundedStateFlags::PEER_DISCONNECTED | FundedStateFlags::MONITOR_UPDATE_IN_PROGRESS | AwaitingChannelReadyFlags::WAITING_FOR_BATCH).is_empty()
52595259
) {
52605260
// If we're not a 0conf channel, we'll be waiting on a monitor update with only
52615261
// AwaitingChannelReady set, though our peer could have sent their channel_ready.
@@ -5341,14 +5341,14 @@ impl<SP: Deref> Channel<SP> where
53415341

53425342
// Note that we don't include ChannelState::WaitingForBatch as we don't want to send
53435343
// channel_ready until the entire batch is ready.
5344-
let need_commitment_update = if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if (f & !FundedStateFlags::ALL).is_empty()) {
5344+
let need_commitment_update = if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f.clone().clear(FundedStateFlags::ALL.into()).is_empty()) {
53455345
self.context.channel_state.set_our_channel_ready();
53465346
true
5347-
} else if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f & !FundedStateFlags::ALL == AwaitingChannelReadyFlags::THEIR_CHANNEL_READY) {
5347+
} else if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f.clone().clear(FundedStateFlags::ALL.into()) == AwaitingChannelReadyFlags::THEIR_CHANNEL_READY) {
53485348
self.context.channel_state = ChannelState::ChannelReady(self.context.channel_state.with_funded_state_flags_mask().into());
53495349
self.context.update_time_counter += 1;
53505350
true
5351-
} else if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f & !FundedStateFlags::ALL == AwaitingChannelReadyFlags::OUR_CHANNEL_READY) {
5351+
} else if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f.clone().clear(FundedStateFlags::ALL.into()) == AwaitingChannelReadyFlags::OUR_CHANNEL_READY) {
53525352
// We got a reorg but not enough to trigger a force close, just ignore.
53535353
false
53545354
} else {

0 commit comments

Comments
 (0)