Skip to content

Commit 6836fc4

Browse files
committed
Stop relying on builder pattern for clearing feature bits
We have a handful of methods to clear features from `*Features` objects, but have ended up with two different API semantics for them. In the next commit we'll make them all consistent, opting against the builder pattern as it turns out all of these lines utilizing it are too long for rustfmt to be happy, so best to clean them up now so that rustfmt doesn't make a mockery of our code later.
1 parent 4c43a5b commit 6836fc4

File tree

4 files changed

+21
-13
lines changed

4 files changed

+21
-13
lines changed

lightning-types/src/features.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,25 +1040,22 @@ impl<T: sealed::Context> Features<T> {
10401040

10411041
impl<T: sealed::UpfrontShutdownScript> Features<T> {
10421042
/// Unsets the `upfront_shutdown_script` feature
1043-
pub fn clear_upfront_shutdown_script(mut self) -> Self {
1043+
pub fn clear_upfront_shutdown_script(&mut self) {
10441044
<T as sealed::UpfrontShutdownScript>::clear_bits(&mut self.flags);
1045-
self
10461045
}
10471046
}
10481047

10491048
impl<T: sealed::ShutdownAnySegwit> Features<T> {
10501049
/// Unsets the `shutdown_anysegwit` feature
1051-
pub fn clear_shutdown_anysegwit(mut self) -> Self {
1050+
pub fn clear_shutdown_anysegwit(&mut self) {
10521051
<T as sealed::ShutdownAnySegwit>::clear_bits(&mut self.flags);
1053-
self
10541052
}
10551053
}
10561054

10571055
impl<T: sealed::Wumbo> Features<T> {
10581056
/// Unsets the `wumbo` feature
1059-
pub fn clear_wumbo(mut self) -> Self {
1057+
pub fn clear_wumbo(&mut self) {
10601058
<T as sealed::Wumbo>::clear_bits(&mut self.flags);
1061-
self
10621059
}
10631060
}
10641061

lightning/src/ln/channel.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11241,7 +11241,8 @@ mod tests {
1124111241

1124211242
#[test]
1124311243
fn upfront_shutdown_script_incompatibility() {
11244-
let features = channelmanager::provided_init_features(&UserConfig::default()).clear_shutdown_anysegwit();
11244+
let mut features = channelmanager::provided_init_features(&UserConfig::default());
11245+
features.clear_shutdown_anysegwit();
1124511246
let non_v0_segwit_shutdown_script = ShutdownScript::new_witness_program(
1124611247
&WitnessProgram::new(WitnessVersion::V16, &[0, 40]).unwrap(),
1124711248
).unwrap();

lightning/src/ln/functional_tests.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,9 @@ pub fn test_funding_exceeds_no_wumbo_limit() {
165165
use crate::ln::channel::MAX_FUNDING_SATOSHIS_NO_WUMBO;
166166
let chanmon_cfgs = create_chanmon_cfgs(2);
167167
let mut node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
168-
*node_cfgs[1].override_init_features.borrow_mut() = Some(channelmanager::provided_init_features(&test_default_channel_config()).clear_wumbo());
168+
let mut features = channelmanager::provided_init_features(&test_default_channel_config());
169+
features.clear_wumbo();
170+
*node_cfgs[1].override_init_features.borrow_mut() = Some(features);
169171
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
170172
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
171173

lightning/src/ln/shutdown_tests.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -772,7 +772,9 @@ fn test_upfront_shutdown_script() {
772772
}
773773

774774
// We test that if case of peer non-signaling we don't enforce committed script at channel opening
775-
*nodes[0].override_init_features.borrow_mut() = Some(nodes[0].node.init_features().clear_upfront_shutdown_script());
775+
let mut features = nodes[0].node.init_features();
776+
features.clear_upfront_shutdown_script();
777+
*nodes[0].override_init_features.borrow_mut() = Some(features);
776778
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 1000000);
777779
nodes[0].node.close_channel(&chan.2, &nodes[1].node.get_our_node_id()).unwrap();
778780
let node_1_shutdown = get_event_msg!(nodes[0], MessageSendEvent::SendShutdown, nodes[1].node.get_our_node_id());
@@ -824,7 +826,9 @@ fn test_unsupported_anysegwit_upfront_shutdown_script() {
824826
let chanmon_cfgs = create_chanmon_cfgs(2);
825827
let mut node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
826828
// Clear shutdown_anysegwit on initiator
827-
*node_cfgs[0].override_init_features.borrow_mut() = Some(channelmanager::provided_init_features(&test_default_channel_config()).clear_shutdown_anysegwit());
829+
let mut features = channelmanager::provided_init_features(&test_default_channel_config());
830+
features.clear_shutdown_anysegwit();
831+
*node_cfgs[0].override_init_features.borrow_mut() = Some(features);
828832
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
829833
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
830834

@@ -853,7 +857,9 @@ fn test_unsupported_anysegwit_upfront_shutdown_script() {
853857
let chanmon_cfgs = create_chanmon_cfgs(2);
854858
let mut node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
855859
// Clear shutdown_anysegwit on responder
856-
*node_cfgs[1].override_init_features.borrow_mut() = Some(channelmanager::provided_init_features(&test_default_channel_config()).clear_shutdown_anysegwit());
860+
let mut features = channelmanager::provided_init_features(&test_default_channel_config());
861+
features.clear_shutdown_anysegwit();
862+
*node_cfgs[1].override_init_features.borrow_mut() = Some(features);
857863
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
858864
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
859865

@@ -984,8 +990,10 @@ fn test_unsupported_anysegwit_shutdown_script() {
984990
let user_cfgs = [None, Some(config), None];
985991
let chanmon_cfgs = create_chanmon_cfgs(3);
986992
let mut node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
987-
*node_cfgs[0].override_init_features.borrow_mut() = Some(channelmanager::provided_init_features(&config).clear_shutdown_anysegwit());
988-
*node_cfgs[1].override_init_features.borrow_mut() = Some(channelmanager::provided_init_features(&config).clear_shutdown_anysegwit());
993+
let mut features = channelmanager::provided_init_features(&config);
994+
features.clear_shutdown_anysegwit();
995+
*node_cfgs[0].override_init_features.borrow_mut() = Some(features.clone());
996+
*node_cfgs[1].override_init_features.borrow_mut() = Some(features);
989997
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &user_cfgs);
990998
let nodes = create_network(3, &node_cfgs, &node_chanmgrs);
991999

0 commit comments

Comments
 (0)