Skip to content

Commit 24604a6

Browse files
committed
Use clear helper on flags copy to mask off bits
1 parent 3c34395 commit 24604a6

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

lightning/src/ln/channel.rs

+10-10
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.0 &= !flag.0 }
304+
fn clear(&mut self, flag: Self) -> Self { self.0 &= !flag.0; *self }
305305
}
306306

307307
$(
@@ -333,7 +333,7 @@ macro_rules! define_state_flags {
333333
#[allow(unused)]
334334
fn $set(&mut self) { self.set($flag_type::new() | $flag) }
335335
#[allow(unused)]
336-
fn $clear(&mut self) { self.clear($flag_type::new() | $flag) }
336+
fn $clear(&mut self) -> Self { self.clear($flag_type::new() | $flag) }
337337
}
338338
};
339339
($flag_type_doc: expr, FUNDED_STATE, $flag_type: ident, $flags: tt) => {
@@ -495,7 +495,7 @@ macro_rules! impl_state_flag {
495495
fn $clear(&mut self) {
496496
match self {
497497
$(
498-
ChannelState::$state(flags) => flags.$clear(),
498+
ChannelState::$state(flags) => { let _ = flags.$clear(); },
499499
)*
500500
_ => debug_assert!(false, "Attempted to clear flag on unexpected ChannelState"),
501501
}
@@ -3068,12 +3068,12 @@ impl<SP: Deref> Channel<SP> where
30683068
let mut check_reconnection = false;
30693069
match &self.context.channel_state {
30703070
ChannelState::AwaitingChannelReady(flags) => {
3071-
let flags = *flags & !FundedStateFlags::ALL;
3071+
let flags = flags.clone().clear(FundedStateFlags::ALL.into());
30723072
debug_assert!(!flags.is_set(AwaitingChannelReadyFlags::OUR_CHANNEL_READY) || !flags.is_set(AwaitingChannelReadyFlags::WAITING_FOR_BATCH));
3073-
if flags & !AwaitingChannelReadyFlags::WAITING_FOR_BATCH == AwaitingChannelReadyFlags::THEIR_CHANNEL_READY {
3073+
if flags.clone().clear(AwaitingChannelReadyFlags::WAITING_FOR_BATCH) == AwaitingChannelReadyFlags::THEIR_CHANNEL_READY {
30743074
// If we reconnected before sending our `channel_ready` they may still resend theirs.
30753075
check_reconnection = true;
3076-
} else if (flags & !AwaitingChannelReadyFlags::WAITING_FOR_BATCH).is_empty() {
3076+
} else if flags.clone().clear(AwaitingChannelReadyFlags::WAITING_FOR_BATCH).is_empty() {
30773077
self.context.channel_state.set_their_channel_ready();
30783078
} else if flags == AwaitingChannelReadyFlags::OUR_CHANNEL_READY {
30793079
self.context.channel_state = ChannelState::ChannelReady(self.context.channel_state.with_funded_state_flags_mask().into());
@@ -5208,7 +5208,7 @@ impl<SP: Deref> Channel<SP> where
52085208
if !self.is_awaiting_monitor_update() { return false; }
52095209
if matches!(
52105210
self.context.channel_state, ChannelState::AwaitingChannelReady(flags)
5211-
if (flags & !(AwaitingChannelReadyFlags::THEIR_CHANNEL_READY | FundedStateFlags::PEER_DISCONNECTED | FundedStateFlags::MONITOR_UPDATE_IN_PROGRESS | AwaitingChannelReadyFlags::WAITING_FOR_BATCH)).is_empty()
5211+
if flags.clone().clear(AwaitingChannelReadyFlags::THEIR_CHANNEL_READY | FundedStateFlags::PEER_DISCONNECTED | FundedStateFlags::MONITOR_UPDATE_IN_PROGRESS | AwaitingChannelReadyFlags::WAITING_FOR_BATCH).is_empty()
52125212
) {
52135213
// If we're not a 0conf channel, we'll be waiting on a monitor update with only
52145214
// AwaitingChannelReady set, though our peer could have sent their channel_ready.
@@ -5294,14 +5294,14 @@ impl<SP: Deref> Channel<SP> where
52945294

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

0 commit comments

Comments
 (0)