OR NodeFeatures from both Channel and Routing message handlers
[rust-lightning] / lightning / src / ln / peer_handler.rs
index 417b14d15b2c9637d64d78997cbae2d2b56de201..5e69389933e26d7648d624b0f2441bde6501f864 100644 (file)
@@ -77,6 +77,7 @@ impl RoutingMessageHandler for IgnoringMessageHandler {
        fn handle_reply_short_channel_ids_end(&self, _their_node_id: &PublicKey, _msg: msgs::ReplyShortChannelIdsEnd) -> Result<(), LightningError> { Ok(()) }
        fn handle_query_channel_range(&self, _their_node_id: &PublicKey, _msg: msgs::QueryChannelRange) -> Result<(), LightningError> { Ok(()) }
        fn handle_query_short_channel_ids(&self, _their_node_id: &PublicKey, _msg: msgs::QueryShortChannelIds) -> Result<(), LightningError> { Ok(()) }
+       fn provided_node_features(&self) -> NodeFeatures { NodeFeatures::empty() }
        fn provided_init_features(&self, _their_node_id: &PublicKey) -> InitFeatures {
                InitFeatures::empty()
        }
@@ -1969,8 +1970,10 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
                // addresses be sorted for future compatibility.
                addresses.sort_by_key(|addr| addr.get_id());
 
+               let features = self.message_handler.chan_handler.provided_node_features()
+                       .or(self.message_handler.route_handler.provided_node_features());
                let announcement = msgs::UnsignedNodeAnnouncement {
-                       features: self.message_handler.chan_handler.provided_node_features(),
+                       features,
                        timestamp: self.last_node_announcement_serial.fetch_add(1, Ordering::AcqRel) as u32,
                        node_id: PublicKey::from_secret_key(&self.secp_ctx, &self.our_node_secret),
                        rgb, alias, addresses,