Skip to content

Commit 70fa465

Browse files
Pass counterparty_node_id to accept_inbound_channel
1 parent c581bab commit 70fa465

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4112,15 +4112,17 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
41124112
/// Called to accept a request to open a channel after [`Event::OpenChannelRequest`] has been
41134113
/// triggered.
41144114
///
4115-
/// The `temporary_channel_id` parameter indicates which inbound channel should be accepted.
4115+
/// The `temporary_channel_id` parameter indicates which inbound channel should be accepted,
4116+
/// and the `counterparty_node_id` parameter is the id of the peer which has requested to open
4117+
/// the channel.
41164118
///
41174119
/// For inbound channels, the `user_channel_id` parameter will be provided back in
41184120
/// [`Event::ChannelClosed::user_channel_id`] to allow tracking of which events correspond
41194121
/// with which `accept_inbound_channel` call.
41204122
///
41214123
/// [`Event::OpenChannelRequest`]: events::Event::OpenChannelRequest
41224124
/// [`Event::ChannelClosed::user_channel_id`]: events::Event::ChannelClosed::user_channel_id
4123-
pub fn accept_inbound_channel(&self, temporary_channel_id: &[u8; 32], user_channel_id: u64) -> Result<(), APIError> {
4125+
pub fn accept_inbound_channel(&self, temporary_channel_id: &[u8; 32], counterparty_node_id: &PublicKey, user_channel_id: u64) -> Result<(), APIError> {
41244126
let _persistence_guard = PersistenceNotifierGuard::notify_on_drop(&self.total_consistency_lock, &self.persistence_notifier);
41254127

41264128
let mut channel_state_lock = self.channel_state.lock().unwrap();
@@ -4130,6 +4132,9 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
41304132
if !channel.get().inbound_is_awaiting_accept() {
41314133
return Err(APIError::APIMisuseError { err: "The channel isn't currently awaiting to be accepted.".to_owned() });
41324134
}
4135+
if *counterparty_node_id != channel.get().get_counterparty_node_id() {
4136+
return Err(APIError::APIMisuseError { err: "The passed counterparty_node_id doesn't match the channel's counterparty node_id".to_owned() });
4137+
}
41334138
channel_state.pending_msg_events.push(events::MessageSendEvent::SendAcceptChannel {
41344139
node_id: channel.get().get_counterparty_node_id(),
41354140
msg: channel.get_mut().accept_inbound_channel(user_channel_id),

lightning/src/ln/functional_tests.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8283,7 +8283,7 @@ fn test_manually_accept_inbound_channel_request() {
82838283
let events = nodes[1].node.get_and_clear_pending_events();
82848284
match events[0] {
82858285
Event::OpenChannelRequest { temporary_channel_id, .. } => {
8286-
nodes[1].node.accept_inbound_channel(&temporary_channel_id, 23).unwrap();
8286+
nodes[1].node.accept_inbound_channel(&temporary_channel_id, &nodes[0].node.get_our_node_id(), 23).unwrap();
82878287
}
82888288
_ => panic!("Unexpected event"),
82898289
}
@@ -8433,8 +8433,8 @@ fn test_can_not_accept_inbound_channel_twice() {
84338433
let events = nodes[1].node.get_and_clear_pending_events();
84348434
match events[0] {
84358435
Event::OpenChannelRequest { temporary_channel_id, .. } => {
8436-
nodes[1].node.accept_inbound_channel(&temporary_channel_id, 0).unwrap();
8437-
let api_res = nodes[1].node.accept_inbound_channel(&temporary_channel_id, 0);
8436+
nodes[1].node.accept_inbound_channel(&temporary_channel_id, &nodes[0].node.get_our_node_id(), 0).unwrap();
8437+
let api_res = nodes[1].node.accept_inbound_channel(&temporary_channel_id, &nodes[0].node.get_our_node_id(), 0);
84388438
match api_res {
84398439
Err(APIError::APIMisuseError { err }) => {
84408440
assert_eq!(err, "The channel isn't currently awaiting to be accepted.");
@@ -8460,13 +8460,13 @@ fn test_can_not_accept_inbound_channel_twice() {
84608460

84618461
#[test]
84628462
fn test_can_not_accept_unknown_inbound_channel() {
8463-
let chanmon_cfg = create_chanmon_cfgs(1);
8464-
let node_cfg = create_node_cfgs(1, &chanmon_cfg);
8465-
let node_chanmgr = create_node_chanmgrs(1, &node_cfg, &[None]);
8466-
let node = create_network(1, &node_cfg, &node_chanmgr)[0].node;
8463+
let chanmon_cfg = create_chanmon_cfgs(2);
8464+
let node_cfg = create_node_cfgs(2, &chanmon_cfg);
8465+
let node_chanmgr = create_node_chanmgrs(2, &node_cfg, &[None, None]);
8466+
let nodes = create_network(2, &node_cfg, &node_chanmgr);
84678467

84688468
let unknown_channel_id = [0; 32];
8469-
let api_res = node.accept_inbound_channel(&unknown_channel_id, 0);
8469+
let api_res = nodes[0].node.accept_inbound_channel(&unknown_channel_id, &nodes[1].node.get_our_node_id(), 0);
84708470
match api_res {
84718471
Err(APIError::ChannelUnavailable { err }) => {
84728472
assert_eq!(err, "Can't accept a channel that doesn't exist");

0 commit comments

Comments
 (0)