Skip to content

Commit a385b67

Browse files
committed
set user_channel_id in accept_inbound_channel fn
fix docs edit user_channel_id docs for Event::ChannelClosed
1 parent f6fa8e9 commit a385b67

File tree

4 files changed

+26
-14
lines changed

4 files changed

+26
-14
lines changed

lightning/src/ln/channel.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4745,7 +4745,7 @@ impl<Signer: Sign> Channel<Signer> {
47454745
/// should be sent back to the counterparty node.
47464746
///
47474747
/// [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
4748-
pub fn accept_inbound_channel(&mut self) -> msgs::AcceptChannel {
4748+
pub fn accept_inbound_channel(&mut self, user_id: Option<u64>) -> msgs::AcceptChannel {
47494749
if self.is_outbound() {
47504750
panic!("Tried to send accept_channel for an outbound channel?");
47514751
}
@@ -4760,6 +4760,9 @@ impl<Signer: Sign> Channel<Signer> {
47604760
}
47614761

47624762
self.inbound_awaiting_accept = false;
4763+
if let Some(id) = user_id {
4764+
self.user_id = id;
4765+
}
47634766

47644767
self.generate_accept_channel_message()
47654768
}
@@ -6420,7 +6423,7 @@ mod tests {
64206423
let mut node_b_chan = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, node_b_node_id, &InitFeatures::known(), &open_channel_msg, 7, &config, 0, &&logger, 42).unwrap();
64216424

64226425
// Node B --> Node A: accept channel, explicitly setting B's dust limit.
6423-
let mut accept_channel_msg = node_b_chan.accept_inbound_channel();
6426+
let mut accept_channel_msg = node_b_chan.accept_inbound_channel(None);
64246427
accept_channel_msg.dust_limit_satoshis = 546;
64256428
node_a_chan.accept_channel(&accept_channel_msg, &config.peer_channel_config_limits, &InitFeatures::known()).unwrap();
64266429
node_a_chan.holder_dust_limit_satoshis = 1560;
@@ -6538,7 +6541,7 @@ mod tests {
65386541
let mut node_b_chan = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, node_b_node_id, &InitFeatures::known(), &open_channel_msg, 7, &config, 0, &&logger, 42).unwrap();
65396542

65406543
// Node B --> Node A: accept channel
6541-
let accept_channel_msg = node_b_chan.accept_inbound_channel();
6544+
let accept_channel_msg = node_b_chan.accept_inbound_channel(None);
65426545
node_a_chan.accept_channel(&accept_channel_msg, &config.peer_channel_config_limits, &InitFeatures::known()).unwrap();
65436546

65446547
// Node A --> Node B: funding created

lightning/src/ln/channelmanager.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4287,8 +4287,13 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
42874287
///
42884288
/// The `temporary_channel_id` parameter indicates which inbound channel should be accepted.
42894289
///
4290-
/// [`Event::OpenChannelRequest`]: crate::util::events::Event::OpenChannelRequest
4291-
pub fn accept_inbound_channel(&self, temporary_channel_id: &[u8; 32]) -> Result<(), APIError> {
4290+
/// For inbound channels, the `user_channel_id` parameter will be provided back in
4291+
/// [`Event::ChannelClosed::user_channel_id`] to allow tracking of which events correspond
4292+
/// with which `accept_inbound_channel` call.
4293+
///
4294+
/// [`Event::OpenChannelRequest`]: events::Event::OpenChannelRequest
4295+
/// [`Event::ChannelClosed::user_channel_id`]: events::Event::ChannelClosed::user_channel_id
4296+
pub fn accept_inbound_channel(&self, temporary_channel_id: &[u8; 32], user_channel_id: Option<u64>) -> Result<(), APIError> {
42924297
let _persistence_guard = PersistenceNotifierGuard::notify_on_drop(&self.total_consistency_lock, &self.persistence_notifier);
42934298

42944299
let mut channel_state_lock = self.channel_state.lock().unwrap();
@@ -4300,7 +4305,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
43004305
}
43014306
channel_state.pending_msg_events.push(events::MessageSendEvent::SendAcceptChannel {
43024307
node_id: channel.get().get_counterparty_node_id(),
4303-
msg: channel.get_mut().accept_inbound_channel(),
4308+
msg: channel.get_mut().accept_inbound_channel(user_channel_id),
43044309
});
43054310
}
43064311
hash_map::Entry::Vacant(_) => {
@@ -4341,7 +4346,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
43414346
if !self.default_configuration.manually_accept_inbound_channels {
43424347
channel_state.pending_msg_events.push(events::MessageSendEvent::SendAcceptChannel {
43434348
node_id: counterparty_node_id.clone(),
4344-
msg: channel.accept_inbound_channel(),
4349+
msg: channel.accept_inbound_channel(None),
43454350
});
43464351
} else {
43474352
let mut pending_events = self.pending_events.lock().unwrap();

lightning/src/ln/functional_tests.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8122,7 +8122,7 @@ fn test_manually_accept_inbound_channel_request() {
81228122
let events = nodes[1].node.get_and_clear_pending_events();
81238123
match events[0] {
81248124
Event::OpenChannelRequest { temporary_channel_id, .. } => {
8125-
nodes[1].node.accept_inbound_channel(&temporary_channel_id).unwrap();
8125+
nodes[1].node.accept_inbound_channel(&temporary_channel_id, None).unwrap();
81268126
}
81278127
_ => panic!("Unexpected event"),
81288128
}
@@ -8259,8 +8259,8 @@ fn test_can_not_accept_inbound_channel_twice() {
82598259
let events = nodes[1].node.get_and_clear_pending_events();
82608260
match events[0] {
82618261
Event::OpenChannelRequest { temporary_channel_id, .. } => {
8262-
nodes[1].node.accept_inbound_channel(&temporary_channel_id).unwrap();
8263-
let api_res = nodes[1].node.accept_inbound_channel(&temporary_channel_id);
8262+
nodes[1].node.accept_inbound_channel(&temporary_channel_id, None).unwrap();
8263+
let api_res = nodes[1].node.accept_inbound_channel(&temporary_channel_id, None);
82648264
match api_res {
82658265
Err(APIError::APIMisuseError { err }) => {
82668266
assert_eq!(err, "The channel isn't currently awaiting to be accepted.");
@@ -8292,7 +8292,7 @@ fn test_can_not_accept_unknown_inbound_channel() {
82928292
let node = create_network(1, &node_cfg, &node_chanmgr)[0].node;
82938293

82948294
let unknown_channel_id = [0; 32];
8295-
let api_res = node.accept_inbound_channel(&unknown_channel_id);
8295+
let api_res = node.accept_inbound_channel(&unknown_channel_id, None);
82968296
match api_res {
82978297
Err(APIError::ChannelUnavailable { err }) => {
82988298
assert_eq!(err, "Can't accept a channel that doesn't exist");

lightning/src/util/events.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -365,11 +365,15 @@ pub enum Event {
365365
/// The channel_id of the channel which has been closed. Note that on-chain transactions
366366
/// resolving the channel are likely still awaiting confirmation.
367367
channel_id: [u8; 32],
368-
/// The `user_channel_id` value passed in to [`ChannelManager::create_channel`], or 0 for
369-
/// an inbound channel. This will always be zero for objects serialized with LDK versions
370-
/// prior to 0.0.102.
368+
/// The `user_channel_id` value passed in to [`ChannelManager::create_channel`] for outbound
369+
/// channels, or to [`ChannelManager::accept_inbound_channel`] for inbound channels if
370+
/// [`UserConfig::manually_accept_inbound_channels`] config flag is set to true. Otherwise
371+
/// `user_channel_id` will be 0 for an inbound channel.
372+
/// This will always be zero for objects serialized with LDK versions prior to 0.0.102.
371373
///
372374
/// [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
375+
/// [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
376+
/// [`UserConfig::manually_accept_inbound_channels`]: crate::util::config::UserConfig::manually_accept_inbound_channels
373377
user_channel_id: u64,
374378
/// The reason the channel was closed.
375379
reason: ClosureReason

0 commit comments

Comments
 (0)