Skip to content

Commit da80c28

Browse files
committed
f Account for channels in between negotiating and signing
1 parent 7219b9c commit da80c28

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

lightning/src/util/anchor_channel_reserves.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ where
262262
LoggerRef::Target: Logger,
263263
PersistRef::Target: Persist<ChannelSigner>,
264264
{
265-
let mut anchor_channels_with_balance = new_hash_set();
265+
let mut anchor_channels = new_hash_set();
266266
// Calculate the number of in-progress anchor channels by inspecting ChannelMonitors with balance.
267267
// This includes channels that are in the process of being resolved on-chain.
268268
for (outpoint, channel_id) in chain_monitor.list_monitors() {
@@ -274,18 +274,17 @@ where
274274
if channel_monitor.channel_type_features().supports_anchors_zero_fee_htlc_tx()
275275
&& !channel_monitor.get_claimable_balances().is_empty()
276276
{
277-
anchor_channels_with_balance.insert(channel_id);
277+
anchor_channels.insert(channel_id);
278278
}
279279
}
280-
// Count channels that are in the middle of negotiation as well.
281-
let num_anchor_channels = anchor_channels_with_balance.len()
282-
+ a_channel_manager
283-
.get_cm()
284-
.list_channels()
285-
.into_iter()
286-
.filter(|c| c.channel_type.is_none())
287-
.count();
288-
get_supportable_anchor_channels(context, utxos) > num_anchor_channels as u64
280+
// Also include channels that are in the middle of negotiation or anchor channels that don't have
281+
// a ChannelMonitor yet.
282+
for channel in a_channel_manager.get_cm().list_channels() {
283+
if channel.channel_type.map_or(true, |ct| ct.supports_anchors_zero_fee_htlc_tx()) {
284+
anchor_channels.insert(channel.channel_id);
285+
}
286+
}
287+
get_supportable_anchor_channels(context, utxos) > anchor_channels.len() as u64
289288
}
290289

291290
#[cfg(test)]

0 commit comments

Comments
 (0)