Skip to content

Commit 8f12703

Browse files
Remove unnecessary pending_monitor_events clone
1 parent a90e9fe commit 8f12703

1 file changed

Lines changed: 15 additions & 16 deletions

File tree

lightning/src/chain/channelmonitor.rs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ use crate::util::byte_utils;
6868
use crate::util::logger::{Logger, WithContext};
6969
use crate::util::persist::MonitorName;
7070
use crate::util::ser::{
71-
MaybeReadable, Readable, ReadableArgs, RequiredWrapper, UpgradableRequired, Writeable, Writer,
72-
U48,
71+
Iterable, MaybeReadable, Readable, ReadableArgs, RequiredWrapper, UpgradableRequired,
72+
Writeable, Writer, U48,
7373
};
7474

7575
#[allow(unused_imports)]
@@ -1719,24 +1719,23 @@ pub(crate) fn write_chanmon_internal<Signer: EcdsaChannelSigner, W: Writer>(
17191719
channel_monitor.lockdown_from_offchain.write(writer)?;
17201720
channel_monitor.holder_tx_signed.write(writer)?;
17211721

1722-
// If we have a `HolderForceClosedWithInfo` event, we need to write the `HolderForceClosed` for backwards compatibility.
1723-
let pending_monitor_events =
1724-
match channel_monitor.pending_monitor_events.iter().find(|ev| match ev {
1725-
MonitorEvent::HolderForceClosedWithInfo { .. } => true,
1726-
_ => false,
1727-
}) {
1728-
Some(MonitorEvent::HolderForceClosedWithInfo { outpoint, .. }) => {
1729-
let mut pending_monitor_events = channel_monitor.pending_monitor_events.clone();
1730-
pending_monitor_events.push(MonitorEvent::HolderForceClosed(*outpoint));
1731-
pending_monitor_events
1732-
},
1733-
_ => channel_monitor.pending_monitor_events.clone(),
1734-
};
1722+
// If we have a `HolderForceClosedWithInfo` event, we need to write the `HolderForceClosed`
1723+
// for backwards compatibility.
1724+
let holder_force_closed_compat = channel_monitor.pending_monitor_events.iter().find_map(|ev| {
1725+
if let MonitorEvent::HolderForceClosedWithInfo { outpoint, .. } = ev {
1726+
Some(MonitorEvent::HolderForceClosed(*outpoint))
1727+
} else {
1728+
None
1729+
}
1730+
});
1731+
let pending_monitor_events = Iterable(
1732+
channel_monitor.pending_monitor_events.iter().chain(holder_force_closed_compat.as_ref()),
1733+
);
17351734

17361735
write_tlv_fields!(writer, {
17371736
(1, channel_monitor.funding_spend_confirmed, option),
17381737
(3, channel_monitor.htlcs_resolved_on_chain, required_vec),
1739-
(5, pending_monitor_events, required_vec),
1738+
(5, pending_monitor_events, required), // Equivalent to required_vec because Iterable also writes as WithoutLength
17401739
(7, channel_monitor.funding_spend_seen, required),
17411740
(9, channel_monitor.counterparty_node_id, required),
17421741
(11, channel_monitor.confirmed_commitment_tx_counterparty_output, option),

0 commit comments

Comments
 (0)