Skip to content

Commit a44454e

Browse files
authored
Merge pull request #589 from jkczyz/2020-04-feature-fixes
Missing feature checks and tests
2 parents 7ec16e5 + 8ca6cb7 commit a44454e

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

lightning/src/ln/features.rs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,10 @@ impl NodeFeatures {
165165
match i {
166166
// Blank out initial_routing_sync (feature bits 2/3), gossip_queries (6/7),
167167
// gossip_queries_ex (10/11), option_static_remotekey (12/13), and
168-
// payment_secret (14/15)
168+
// option_support_large_channel (16/17)
169169
0 => flags.push(feature_byte & 0b00110011),
170-
1 => flags.push(feature_byte & 0b00000011),
170+
1 => flags.push(feature_byte & 0b11000011),
171+
2 => flags.push(feature_byte & 0b00000011),
171172
_ => (),
172173
}
173174
}
@@ -299,15 +300,15 @@ impl<T: sealed::PaymentSecret> Features<T> {
299300
// Note that we never need to test this since what really matters is the invoice - iff the
300301
// invoice provides a payment_secret, we assume that we can use it (ie that the recipient
301302
// supports payment_secret).
302-
pub(crate) fn payment_secret(&self) -> bool {
303+
pub(crate) fn supports_payment_secret(&self) -> bool {
303304
self.flags.len() > 1 && (self.flags[1] & (3 << (14-8))) != 0
304305
}
305306
}
306307

307308
impl<T: sealed::BasicMPP> Features<T> {
308309
// We currently never test for this since we don't actually *generate* multipath routes.
309310
#[allow(dead_code)]
310-
pub(crate) fn basic_mpp(&self) -> bool {
311+
pub(crate) fn supports_basic_mpp(&self) -> bool {
311312
self.flags.len() > 2 && (self.flags[2] & (3 << (16-8*2))) != 0
312313
}
313314
}
@@ -356,6 +357,12 @@ mod tests {
356357
assert!(InitFeatures::supported().supports_variable_length_onion());
357358
assert!(NodeFeatures::supported().supports_variable_length_onion());
358359

360+
assert!(InitFeatures::supported().supports_payment_secret());
361+
assert!(NodeFeatures::supported().supports_payment_secret());
362+
363+
assert!(InitFeatures::supported().supports_basic_mpp());
364+
assert!(NodeFeatures::supported().supports_basic_mpp());
365+
359366
let mut init_features = InitFeatures::supported();
360367
init_features.set_initial_routing_sync();
361368
assert!(!init_features.requires_unknown_bits());
@@ -382,10 +389,12 @@ mod tests {
382389

383390
{
384391
// Check that the flags are as expected: optional_data_loss_protect,
385-
// option_upfront_shutdown_script, and var_onion_optin set.
392+
// option_upfront_shutdown_script, var_onion_optin, payment_secret, and
393+
// basic_mpp.
394+
assert_eq!(res.flags.len(), 3);
386395
assert_eq!(res.flags[0], 0b00100010);
387-
assert_eq!(res.flags[1], 0b00000010);
388-
assert_eq!(res.flags.len(), 2);
396+
assert_eq!(res.flags[1], 0b10000010);
397+
assert_eq!(res.flags[2], 0b00000010);
389398
}
390399

391400
// Check that the initial_routing_sync feature was correctly blanked out.

0 commit comments

Comments
 (0)