Skip to content

Commit bdaafaf

Browse files
committed
Use clear helper on flags copy to mask off bits
1 parent 57b30df commit bdaafaf

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

lightning/src/ln/channel.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ macro_rules! define_state_flags {
301301
#[allow(unused)]
302302
fn set(&mut self, flag: Self) { *self |= flag }
303303
#[allow(unused)]
304-
fn clear(&mut self, flag: Self) { *self &= !flag }
304+
fn clear(&mut self, flag: Self) -> Self { *self &= !flag; *self }
305305
}
306306

307307
$(
@@ -337,7 +337,7 @@ macro_rules! define_state_flags {
337337
#[allow(unused)]
338338
fn $set(&mut self) { self.set($flag_type::new() | $flag) }
339339
#[allow(unused)]
340-
fn $clear(&mut self) { self.clear($flag_type::new() | $flag) }
340+
fn $clear(&mut self) -> Self { self.clear($flag_type::new() | $flag) }
341341
}
342342
};
343343
($flag_type_doc: expr, FUNDED_STATE, $flag_type: ident, $flags: tt) => {
@@ -539,7 +539,7 @@ macro_rules! impl_state_flag {
539539
fn $clear(&mut self) {
540540
match self {
541541
$(
542-
ChannelState::$state(flags) => flags.$clear(),
542+
ChannelState::$state(flags) => { let _ = flags.$clear(); },
543543
)*
544544
_ => debug_assert!(false, "Attempted to clear flag on unexpected ChannelState"),
545545
}
@@ -3083,12 +3083,12 @@ impl<SP: Deref> Channel<SP> where
30833083
let mut check_reconnection = false;
30843084
match &self.context.channel_state {
30853085
ChannelState::AwaitingChannelReady(flags) => {
3086-
let flags = *flags & !FundedStateFlags::ALL;
3086+
let flags = flags.clone().clear(FundedStateFlags::ALL.into());
30873087
debug_assert!(!flags.is_set(AwaitingChannelReadyFlags::OUR_CHANNEL_READY) || !flags.is_set(AwaitingChannelReadyFlags::WAITING_FOR_BATCH));
3088-
if flags & !AwaitingChannelReadyFlags::WAITING_FOR_BATCH == AwaitingChannelReadyFlags::THEIR_CHANNEL_READY {
3088+
if flags.clone().clear(AwaitingChannelReadyFlags::WAITING_FOR_BATCH) == AwaitingChannelReadyFlags::THEIR_CHANNEL_READY {
30893089
// If we reconnected before sending our `channel_ready` they may still resend theirs.
30903090
check_reconnection = true;
3091-
} else if (flags & !AwaitingChannelReadyFlags::WAITING_FOR_BATCH).is_empty() {
3091+
} else if flags.clone().clear(AwaitingChannelReadyFlags::WAITING_FOR_BATCH).is_empty() {
30923092
self.context.channel_state.set_their_channel_ready();
30933093
} else if flags == AwaitingChannelReadyFlags::OUR_CHANNEL_READY {
30943094
self.context.channel_state = ChannelState::ChannelReady(self.context.channel_state.with_funded_state_flags_mask().into());
@@ -5212,7 +5212,7 @@ impl<SP: Deref> Channel<SP> where
52125212
if !self.is_awaiting_monitor_update() { return false; }
52135213
if matches!(
52145214
self.context.channel_state, ChannelState::AwaitingChannelReady(flags)
5215-
if (flags & !(AwaitingChannelReadyFlags::THEIR_CHANNEL_READY | FundedStateFlags::PEER_DISCONNECTED | FundedStateFlags::MONITOR_UPDATE_IN_PROGRESS | AwaitingChannelReadyFlags::WAITING_FOR_BATCH)).is_empty()
5215+
if flags.clone().clear(AwaitingChannelReadyFlags::THEIR_CHANNEL_READY | FundedStateFlags::PEER_DISCONNECTED | FundedStateFlags::MONITOR_UPDATE_IN_PROGRESS | AwaitingChannelReadyFlags::WAITING_FOR_BATCH).is_empty()
52165216
) {
52175217
// If we're not a 0conf channel, we'll be waiting on a monitor update with only
52185218
// AwaitingChannelReady set, though our peer could have sent their channel_ready.
@@ -5298,14 +5298,14 @@ impl<SP: Deref> Channel<SP> where
52985298

52995299
// Note that we don't include ChannelState::WaitingForBatch as we don't want to send
53005300
// channel_ready until the entire batch is ready.
5301-
let need_commitment_update = if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if (f & !FundedStateFlags::ALL).is_empty()) {
5301+
let need_commitment_update = if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f.clone().clear(FundedStateFlags::ALL.into()).is_empty()) {
53025302
self.context.channel_state.set_our_channel_ready();
53035303
true
5304-
} else if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f & !FundedStateFlags::ALL == AwaitingChannelReadyFlags::THEIR_CHANNEL_READY) {
5304+
} else if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f.clone().clear(FundedStateFlags::ALL.into()) == AwaitingChannelReadyFlags::THEIR_CHANNEL_READY) {
53055305
self.context.channel_state = ChannelState::ChannelReady(self.context.channel_state.with_funded_state_flags_mask().into());
53065306
self.context.update_time_counter += 1;
53075307
true
5308-
} else if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f & !FundedStateFlags::ALL == AwaitingChannelReadyFlags::OUR_CHANNEL_READY) {
5308+
} else if matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(f) if f.clone().clear(FundedStateFlags::ALL.into()) == AwaitingChannelReadyFlags::OUR_CHANNEL_READY) {
53095309
// We got a reorg but not enough to trigger a force close, just ignore.
53105310
false
53115311
} else {

0 commit comments

Comments
 (0)