Skip to content

Commit 65b7133

Browse files
committed
Pass InitFeatures by reference to Channel
1 parent f600a29 commit 65b7133

File tree

3 files changed

+22
-22
lines changed

3 files changed

+22
-22
lines changed

lightning/src/ln/channel.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,7 @@ impl<Signer: Sign> Channel<Signer> {
568568
}
569569

570570
// Constructors:
571-
pub fn new_outbound<K: Deref, F: Deref>(fee_estimator: &F, keys_provider: &K, counterparty_node_id: PublicKey, their_features: InitFeatures, channel_value_satoshis: u64, push_msat: u64, user_id: u64, config: &UserConfig) -> Result<Channel<Signer>, APIError>
571+
pub fn new_outbound<K: Deref, F: Deref>(fee_estimator: &F, keys_provider: &K, counterparty_node_id: PublicKey, their_features: &InitFeatures, channel_value_satoshis: u64, push_msat: u64, user_id: u64, config: &UserConfig) -> Result<Channel<Signer>, APIError>
572572
where K::Target: KeysInterface<Signer = Signer>,
573573
F::Target: FeeEstimator,
574574
{
@@ -601,7 +601,7 @@ impl<Signer: Sign> Channel<Signer> {
601601
} else { None };
602602

603603
if let Some(shutdown_scriptpubkey) = &shutdown_scriptpubkey {
604-
if !shutdown_scriptpubkey.is_compatible(&their_features) {
604+
if !shutdown_scriptpubkey.is_compatible(their_features) {
605605
return Err(APIError::APIMisuseError { err: format!("Provided a scriptpubkey format not accepted by peer. script: ({})", shutdown_scriptpubkey.clone().into_inner().to_bytes().to_hex()) });
606606
}
607607
}
@@ -714,7 +714,7 @@ impl<Signer: Sign> Channel<Signer> {
714714

715715
/// Creates a new channel from a remote sides' request for one.
716716
/// Assumes chain_hash has already been checked and corresponds with what we expect!
717-
pub fn new_from_req<K: Deref, F: Deref>(fee_estimator: &F, keys_provider: &K, counterparty_node_id: PublicKey, their_features: InitFeatures, msg: &msgs::OpenChannel, user_id: u64, config: &UserConfig) -> Result<Channel<Signer>, ChannelError>
717+
pub fn new_from_req<K: Deref, F: Deref>(fee_estimator: &F, keys_provider: &K, counterparty_node_id: PublicKey, their_features: &InitFeatures, msg: &msgs::OpenChannel, user_id: u64, config: &UserConfig) -> Result<Channel<Signer>, ChannelError>
718718
where K::Target: KeysInterface<Signer = Signer>,
719719
F::Target: FeeEstimator
720720
{
@@ -835,7 +835,7 @@ impl<Signer: Sign> Channel<Signer> {
835835
if script.len() == 0 {
836836
None
837837
} else {
838-
match ShutdownScript::try_from((script.clone(), &their_features)) {
838+
match ShutdownScript::try_from((script.clone(), their_features)) {
839839
Ok(shutdown_script) => Some(shutdown_script.into_inner()),
840840
Err(_) => return Err(ChannelError::Close(format!("Peer is signaling upfront_shutdown but has provided a non-accepted scriptpubkey format. script: ({})", script.to_bytes().to_hex()))),
841841
}
@@ -1500,7 +1500,7 @@ impl<Signer: Sign> Channel<Signer> {
15001500

15011501
// Message handlers:
15021502

1503-
pub fn accept_channel(&mut self, msg: &msgs::AcceptChannel, config: &UserConfig, their_features: InitFeatures) -> Result<(), ChannelError> {
1503+
pub fn accept_channel(&mut self, msg: &msgs::AcceptChannel, config: &UserConfig, their_features: &InitFeatures) -> Result<(), ChannelError> {
15041504
// Check sanity of message fields:
15051505
if !self.is_outbound() {
15061506
return Err(ChannelError::Close("Got an accept_channel message from an inbound peer".to_owned()));
@@ -1572,7 +1572,7 @@ impl<Signer: Sign> Channel<Signer> {
15721572
if script.len() == 0 {
15731573
None
15741574
} else {
1575-
match ShutdownScript::try_from((script.clone(), &their_features)) {
1575+
match ShutdownScript::try_from((script.clone(), their_features)) {
15761576
Ok(shutdown_script) => Some(shutdown_script.into_inner()),
15771577
Err(_) => return Err(ChannelError::Close(format!("Peer is signaling upfront_shutdown but has provided a non-accepted scriptpubkey format. script: ({})", script.to_bytes().to_hex()))),
15781578
}
@@ -5241,7 +5241,7 @@ mod tests {
52415241

52425242
let node_a_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
52435243
let config = UserConfig::default();
5244-
let node_a_chan = Channel::<EnforcingSigner>::new_outbound(&&fee_est, &&keys_provider, node_a_node_id, InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
5244+
let node_a_chan = Channel::<EnforcingSigner>::new_outbound(&&fee_est, &&keys_provider, node_a_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
52455245

52465246
// Now change the fee so we can check that the fee in the open_channel message is the
52475247
// same as the old fee.
@@ -5266,18 +5266,18 @@ mod tests {
52665266
// Create Node A's channel pointing to Node B's pubkey
52675267
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
52685268
let config = UserConfig::default();
5269-
let mut node_a_chan = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, node_b_node_id, InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
5269+
let mut node_a_chan = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, node_b_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
52705270

52715271
// Create Node B's channel by receiving Node A's open_channel message
52725272
// Make sure A's dust limit is as we expect.
52735273
let open_channel_msg = node_a_chan.get_open_channel(genesis_block(network).header.block_hash());
52745274
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[7; 32]).unwrap());
5275-
let node_b_chan = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, node_b_node_id, InitFeatures::known(), &open_channel_msg, 7, &config).unwrap();
5275+
let node_b_chan = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, node_b_node_id, &InitFeatures::known(), &open_channel_msg, 7, &config).unwrap();
52765276

52775277
// Node B --> Node A: accept channel, explicitly setting B's dust limit.
52785278
let mut accept_channel_msg = node_b_chan.get_accept_channel();
52795279
accept_channel_msg.dust_limit_satoshis = 546;
5280-
node_a_chan.accept_channel(&accept_channel_msg, &config, InitFeatures::known()).unwrap();
5280+
node_a_chan.accept_channel(&accept_channel_msg, &config, &InitFeatures::known()).unwrap();
52815281
node_a_chan.holder_dust_limit_satoshis = 1560;
52825282

52835283
// Put some inbound and outbound HTLCs in A's channel.
@@ -5333,7 +5333,7 @@ mod tests {
53335333

53345334
let node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
53355335
let config = UserConfig::default();
5336-
let mut chan = Channel::<EnforcingSigner>::new_outbound(&&fee_est, &&keys_provider, node_id, InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
5336+
let mut chan = Channel::<EnforcingSigner>::new_outbound(&&fee_est, &&keys_provider, node_id, &InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
53375337

53385338
let commitment_tx_fee_0_htlcs = chan.commit_tx_fee_msat(0);
53395339
let commitment_tx_fee_1_htlc = chan.commit_tx_fee_msat(1);
@@ -5382,16 +5382,16 @@ mod tests {
53825382
// Create Node A's channel pointing to Node B's pubkey
53835383
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
53845384
let config = UserConfig::default();
5385-
let mut node_a_chan = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, node_b_node_id, InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
5385+
let mut node_a_chan = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, node_b_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
53865386

53875387
// Create Node B's channel by receiving Node A's open_channel message
53885388
let open_channel_msg = node_a_chan.get_open_channel(chain_hash);
53895389
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[7; 32]).unwrap());
5390-
let mut node_b_chan = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, node_b_node_id, InitFeatures::known(), &open_channel_msg, 7, &config).unwrap();
5390+
let mut node_b_chan = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, node_b_node_id, &InitFeatures::known(), &open_channel_msg, 7, &config).unwrap();
53915391

53925392
// Node B --> Node A: accept channel
53935393
let accept_channel_msg = node_b_chan.get_accept_channel();
5394-
node_a_chan.accept_channel(&accept_channel_msg, &config, InitFeatures::known()).unwrap();
5394+
node_a_chan.accept_channel(&accept_channel_msg, &config, &InitFeatures::known()).unwrap();
53955395

53965396
// Node A --> Node B: funding created
53975397
let output_script = node_a_chan.get_funding_redeemscript();
@@ -5444,7 +5444,7 @@ mod tests {
54445444
// Create a channel.
54455445
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
54465446
let config = UserConfig::default();
5447-
let mut node_a_chan = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, node_b_node_id, InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
5447+
let mut node_a_chan = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, node_b_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config).unwrap();
54485448
assert!(node_a_chan.counterparty_forwarding_info.is_none());
54495449
assert_eq!(node_a_chan.holder_htlc_minimum_msat, 1); // the default
54505450
assert!(node_a_chan.counterparty_forwarding_info().is_none());
@@ -5508,7 +5508,7 @@ mod tests {
55085508
let counterparty_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
55095509
let mut config = UserConfig::default();
55105510
config.channel_options.announced_channel = false;
5511-
let mut chan = Channel::<InMemorySigner>::new_outbound(&&feeest, &&keys_provider, counterparty_node_id, InitFeatures::known(), 10_000_000, 100000, 42, &config).unwrap(); // Nothing uses their network key in this test
5511+
let mut chan = Channel::<InMemorySigner>::new_outbound(&&feeest, &&keys_provider, counterparty_node_id, &InitFeatures::known(), 10_000_000, 100000, 42, &config).unwrap(); // Nothing uses their network key in this test
55125512
chan.holder_dust_limit_satoshis = 546;
55135513
chan.counterparty_selected_channel_reserve_satoshis = Some(0); // Filled in in accept_channel
55145514

lightning/src/ln/channelmanager.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,7 +1165,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
11651165
}
11661166
};
11671167
let config = if override_config.is_some() { override_config.as_ref().unwrap() } else { &self.default_configuration };
1168-
let channel = Channel::new_outbound(&self.fee_estimator, &self.keys_manager, their_network_key, their_features, channel_value_satoshis, push_msat, user_id, config)?;
1168+
let channel = Channel::new_outbound(&self.fee_estimator, &self.keys_manager, their_network_key, &their_features, channel_value_satoshis, push_msat, user_id, config)?;
11691169
let res = channel.get_open_channel(self.genesis_hash.clone());
11701170

11711171
let _persistence_guard = PersistenceNotifierGuard::notify_on_drop(&self.total_consistency_lock, &self.persistence_notifier);
@@ -3023,7 +3023,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
30233023
return Err(MsgHandleErrInternal::send_err_msg_no_close("Unknown genesis block hash".to_owned(), msg.temporary_channel_id.clone()));
30243024
}
30253025

3026-
let channel = Channel::new_from_req(&self.fee_estimator, &self.keys_manager, counterparty_node_id.clone(), their_features, msg, 0, &self.default_configuration)
3026+
let channel = Channel::new_from_req(&self.fee_estimator, &self.keys_manager, counterparty_node_id.clone(), &their_features, msg, 0, &self.default_configuration)
30273027
.map_err(|e| MsgHandleErrInternal::from_chan_no_close(e, msg.temporary_channel_id))?;
30283028
let mut channel_state_lock = self.channel_state.lock().unwrap();
30293029
let channel_state = &mut *channel_state_lock;
@@ -3049,7 +3049,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
30493049
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
30503050
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.temporary_channel_id));
30513051
}
3052-
try_chan_entry!(self, chan.get_mut().accept_channel(&msg, &self.default_configuration, their_features), channel_state, chan);
3052+
try_chan_entry!(self, chan.get_mut().accept_channel(&msg, &self.default_configuration, &their_features), channel_state, chan);
30533053
(chan.get().get_value_satoshis(), chan.get().get_funding_redeemscript().to_v0_p2wsh(), chan.get().get_user_id())
30543054
},
30553055
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.temporary_channel_id))

lightning/src/ln/functional_tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7750,7 +7750,7 @@ fn test_user_configurable_csv_delay() {
77507750
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
77517751

77527752
// We test config.our_to_self > BREAKDOWN_TIMEOUT is enforced in Channel::new_outbound()
7753-
if let Err(error) = Channel::new_outbound(&&test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) }, &nodes[0].keys_manager, nodes[1].node.get_our_node_id(), InitFeatures::known(), 1000000, 1000000, 0, &low_our_to_self_config) {
7753+
if let Err(error) = Channel::new_outbound(&&test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) }, &nodes[0].keys_manager, nodes[1].node.get_our_node_id(), &InitFeatures::known(), 1000000, 1000000, 0, &low_our_to_self_config) {
77547754
match error {
77557755
APIError::APIMisuseError { err } => { assert!(regex::Regex::new(r"Configured with an unreasonable our_to_self_delay \(\d+\) putting user funds at risks").unwrap().is_match(err.as_str())); },
77567756
_ => panic!("Unexpected event"),
@@ -7761,7 +7761,7 @@ fn test_user_configurable_csv_delay() {
77617761
nodes[1].node.create_channel(nodes[0].node.get_our_node_id(), 1000000, 1000000, 42, None).unwrap();
77627762
let mut open_channel = get_event_msg!(nodes[1], MessageSendEvent::SendOpenChannel, nodes[0].node.get_our_node_id());
77637763
open_channel.to_self_delay = 200;
7764-
if let Err(error) = Channel::new_from_req(&&test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) }, &nodes[0].keys_manager, nodes[1].node.get_our_node_id(), InitFeatures::known(), &open_channel, 0, &low_our_to_self_config) {
7764+
if let Err(error) = Channel::new_from_req(&&test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) }, &nodes[0].keys_manager, nodes[1].node.get_our_node_id(), &InitFeatures::known(), &open_channel, 0, &low_our_to_self_config) {
77657765
match error {
77667766
ChannelError::Close(err) => { assert!(regex::Regex::new(r"Configured with an unreasonable our_to_self_delay \(\d+\) putting user funds at risks").unwrap().is_match(err.as_str())); },
77677767
_ => panic!("Unexpected event"),
@@ -7787,7 +7787,7 @@ fn test_user_configurable_csv_delay() {
77877787
nodes[1].node.create_channel(nodes[0].node.get_our_node_id(), 1000000, 1000000, 42, None).unwrap();
77887788
let mut open_channel = get_event_msg!(nodes[1], MessageSendEvent::SendOpenChannel, nodes[0].node.get_our_node_id());
77897789
open_channel.to_self_delay = 200;
7790-
if let Err(error) = Channel::new_from_req(&&test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) }, &nodes[0].keys_manager, nodes[1].node.get_our_node_id(), InitFeatures::known(), &open_channel, 0, &high_their_to_self_config) {
7790+
if let Err(error) = Channel::new_from_req(&&test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) }, &nodes[0].keys_manager, nodes[1].node.get_our_node_id(), &InitFeatures::known(), &open_channel, 0, &high_their_to_self_config) {
77917791
match error {
77927792
ChannelError::Close(err) => { assert!(regex::Regex::new(r"They wanted our payments to be delayed by a needlessly long period\. Upper limit: \d+\. Actual: \d+").unwrap().is_match(err.as_str())); },
77937793
_ => panic!("Unexpected event"),

0 commit comments

Comments
 (0)