Skip to content

Commit 754c5a5

Browse files
committed
f add ClosureReason::CounterpartyCoopClosedPrefundedChannel
1 parent c9ca69e commit 754c5a5

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

lightning/src/events/mod.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ impl_writeable_tlv_based_enum_upgradable!(PathFailure,
113113
);
114114

115115
#[derive(Clone, Debug, PartialEq, Eq)]
116-
/// The reason the channel was closed. See individual variants more details.
116+
/// The reason the channel was closed. See individual variants for more details.
117117
pub enum ClosureReason {
118118
/// Closure generated from receiving a peer error message.
119119
///
@@ -164,7 +164,10 @@ pub enum ClosureReason {
164164
///
165165
/// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
166166
/// [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
167-
OutdatedChannelManager
167+
OutdatedChannelManager,
168+
/// The counterparty requested a cooperative close of a channel that had not established
169+
/// a funding transaction yet. The channel has been immediately closed.
170+
CounterpartyCoopClosedPrefundedChannel,
168171
}
169172

170173
impl core::fmt::Display for ClosureReason {
@@ -184,6 +187,7 @@ impl core::fmt::Display for ClosureReason {
184187
},
185188
ClosureReason::DisconnectedPeer => f.write_str("the peer disconnected prior to the channel being funded"),
186189
ClosureReason::OutdatedChannelManager => f.write_str("the ChannelManager read from disk was stale compared to ChannelMonitor(s)"),
190+
ClosureReason::CounterpartyCoopClosedPrefundedChannel => f.write_str("the peer requested the prefunded channel be closed"),
187191
}
188192
}
189193
}
@@ -197,6 +201,7 @@ impl_writeable_tlv_based_enum_upgradable!(ClosureReason,
197201
(8, ProcessingError) => { (1, err, required) },
198202
(10, DisconnectedPeer) => {},
199203
(12, OutdatedChannelManager) => {},
204+
(13, CounterpartyCoopClosedPrefundedChannel) => {},
200205
);
201206

202207
/// Intended destination of a failed HTLC as indicated in [`Event::HTLCHandlingFailed`].

lightning/src/ln/channelmanager.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -5518,15 +5518,17 @@ where
55185518
})?;
55195519
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
55205520
let peer_state = &mut *peer_state_lock;
5521+
// TODO(dunxen): Fix this duplication when we switch to a single map with enums as per
5522+
// https://github.com/lightningdevkit/rust-lightning/issues/2422
55215523
if let hash_map::Entry::Occupied(chan_entry) = peer_state.outbound_v1_channel_by_id.entry(msg.channel_id.clone()) {
5522-
log_error!(self.logger, "Force-closing channel {}", log_bytes!(&msg.channel_id[..]));
5523-
self.issue_channel_close_events(&chan_entry.get().context, ClosureReason::HolderForceClosed);
5524+
log_error!(self.logger, "Immediately closing prefunded channel {} as peer asked to cooperatively shut it down (which is unnecessary)", log_bytes!(&msg.channel_id[..]));
5525+
self.issue_channel_close_events(&chan_entry.get().context, ClosureReason::CounterpartyCoopClosedPrefundedChannel);
55245526
let mut chan = remove_channel!(self, chan_entry);
55255527
self.finish_force_close_channel(chan.context.force_shutdown(false));
55265528
return Ok(());
55275529
} else if let hash_map::Entry::Occupied(chan_entry) = peer_state.inbound_v1_channel_by_id.entry(msg.channel_id.clone()) {
5528-
log_error!(self.logger, "Force-closing channel {}", log_bytes!(&msg.channel_id[..]));
5529-
self.issue_channel_close_events(&chan_entry.get().context, ClosureReason::HolderForceClosed);
5530+
log_error!(self.logger, "Immediately closing prefunded channel {} as peer asked to cooperatively shut it down (which is unnecessary)", log_bytes!(&msg.channel_id[..]));
5531+
self.issue_channel_close_events(&chan_entry.get().context, ClosureReason::CounterpartyCoopClosedPrefundedChannel);
55305532
let mut chan = remove_channel!(self, chan_entry);
55315533
self.finish_force_close_channel(chan.context.force_shutdown(false));
55325534
return Ok(());

0 commit comments

Comments
 (0)