From: Jeffrey Czyz Date: Thu, 16 Apr 2020 01:21:29 +0000 (-0700) Subject: Add missing feature sanity checks X-Git-Tag: v0.0.12~85^2~1 X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=rust-lightning;a=commitdiff_plain;h=fe73761d90fcbbd32181fde5855e8705d91e7c1b Add missing feature sanity checks PaymentSecret and BasicMPP were added in d39f25839ad9ff5e2a0e1dd8919e991828d1bf35 but the sanity test for supported features was missed. --- diff --git a/lightning/src/ln/features.rs b/lightning/src/ln/features.rs index 9ab53b4a..f441f80a 100644 --- a/lightning/src/ln/features.rs +++ b/lightning/src/ln/features.rs @@ -299,7 +299,7 @@ impl Features { // Note that we never need to test this since what really matters is the invoice - iff the // invoice provides a payment_secret, we assume that we can use it (ie that the recipient // supports payment_secret). - pub(crate) fn payment_secret(&self) -> bool { + pub(crate) fn supports_payment_secret(&self) -> bool { self.flags.len() > 1 && (self.flags[1] & (3 << (14-8))) != 0 } } @@ -307,7 +307,7 @@ impl Features { impl Features { // We currently never test for this since we don't actually *generate* multipath routes. #[allow(dead_code)] - pub(crate) fn basic_mpp(&self) -> bool { + pub(crate) fn supports_basic_mpp(&self) -> bool { self.flags.len() > 2 && (self.flags[2] & (3 << (16-8*2))) != 0 } } @@ -356,6 +356,12 @@ mod tests { assert!(InitFeatures::supported().supports_variable_length_onion()); assert!(NodeFeatures::supported().supports_variable_length_onion()); + assert!(InitFeatures::supported().supports_payment_secret()); + assert!(NodeFeatures::supported().supports_payment_secret()); + + assert!(InitFeatures::supported().supports_basic_mpp()); + assert!(NodeFeatures::supported().supports_basic_mpp()); + let mut init_features = InitFeatures::supported(); init_features.set_initial_routing_sync(); assert!(!init_features.requires_unknown_bits());