@@ -187,8 +187,14 @@ impl<T: sealed::Context> Features<T> {
187
187
pub ( crate ) fn requires_unknown_bits ( & self ) -> bool {
188
188
self . flags . iter ( ) . enumerate ( ) . any ( |( idx, & byte) | {
189
189
( match idx {
190
- 0 => ( byte & 0b00010100 ) ,
190
+ // Unknown bits are even bits which we don't understand, we list ones which we do
191
+ // here:
192
+ // unknown, upfront_shutdown_script, unknown (actually initial_routing_sync, but it
193
+ // is only valid as an optional feature), and data_loss_protect:
194
+ 0 => ( byte & 0b01000100 ) ,
195
+ // unknown, unknown, unknown, var_onion_optin:
191
196
1 => ( byte & 0b01010100 ) ,
197
+ // fallback, all even bits set:
192
198
_ => ( byte & 0b01010101 ) ,
193
199
} ) != 0
194
200
} )
@@ -197,7 +203,10 @@ impl<T: sealed::Context> Features<T> {
197
203
pub ( crate ) fn supports_unknown_bits ( & self ) -> bool {
198
204
self . flags . iter ( ) . enumerate ( ) . any ( |( idx, & byte) | {
199
205
( match idx {
206
+ // unknown, upfront_shutdown_script, initial_routing_sync (is only valid as an
207
+ // optional feature), and data_loss_protect:
200
208
0 => ( byte & 0b11000100 ) ,
209
+ // unknown, unknown, unknown, var_onion_optin:
201
210
1 => ( byte & 0b11111100 ) ,
202
211
_ => byte,
203
212
} ) != 0
0 commit comments