@@ -64,6 +64,20 @@ pub trait CustomMessageHandler: wire::CustomMessageReader {
64
64
/// in the process. Each message is paired with the node id of the intended recipient. If no
65
65
/// connection to the node exists, then the message is simply not sent.
66
66
fn get_and_clear_pending_msg ( & self ) -> Vec < ( PublicKey , Self :: CustomMessage ) > ;
67
+
68
+ /// Gets the node feature flags which this handler itself supports. All available handlers are
69
+ /// queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
70
+ /// which are broadcasted in our [`NodeAnnouncement`] message.
71
+ ///
72
+ /// [`NodeAnnouncement`]: crate::ln::msgs::NodeAnnouncement
73
+ fn provided_node_features ( & self ) -> NodeFeatures ;
74
+
75
+ /// Gets the init feature flags which should be sent to the given peer. All available handlers
76
+ /// are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
77
+ /// which are sent in our [`Init`] message.
78
+ ///
79
+ /// [`Init`]: crate::ln::msgs::Init
80
+ fn provided_init_features ( & self , their_node_id : & PublicKey ) -> InitFeatures ;
67
81
}
68
82
69
83
/// A dummy struct which implements `RoutingMessageHandler` without storing any routing information
@@ -149,6 +163,12 @@ impl CustomMessageHandler for IgnoringMessageHandler {
149
163
}
150
164
151
165
fn get_and_clear_pending_msg ( & self ) -> Vec < ( PublicKey , Self :: CustomMessage ) > { Vec :: new ( ) }
166
+
167
+ fn provided_node_features ( & self ) -> NodeFeatures { NodeFeatures :: empty ( ) }
168
+
169
+ fn provided_init_features ( & self , _their_node_id : & PublicKey ) -> InitFeatures {
170
+ InitFeatures :: empty ( )
171
+ }
152
172
}
153
173
154
174
/// A dummy struct which implements `ChannelMessageHandler` without having any channels.
@@ -1247,7 +1267,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
1247
1267
insert_node_id ! ( ) ;
1248
1268
let features = self . message_handler . chan_handler . provided_init_features ( & their_node_id)
1249
1269
| self . message_handler . route_handler . provided_init_features ( & their_node_id)
1250
- | self . message_handler . onion_message_handler . provided_init_features ( & their_node_id) ;
1270
+ | self . message_handler . onion_message_handler . provided_init_features ( & their_node_id)
1271
+ | self . message_handler . custom_message_handler . provided_init_features ( & their_node_id) ;
1251
1272
let resp = msgs:: Init { features, remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) ) } ;
1252
1273
self . enqueue_message ( peer, & resp) ;
1253
1274
peer. awaiting_pong_timer_tick_intervals = 0 ;
@@ -1261,7 +1282,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
1261
1282
insert_node_id ! ( ) ;
1262
1283
let features = self . message_handler . chan_handler . provided_init_features ( & their_node_id)
1263
1284
| self . message_handler . route_handler . provided_init_features ( & their_node_id)
1264
- | self . message_handler . onion_message_handler . provided_init_features ( & their_node_id) ;
1285
+ | self . message_handler . onion_message_handler . provided_init_features ( & their_node_id)
1286
+ | self . message_handler . custom_message_handler . provided_init_features ( & their_node_id) ;
1265
1287
let resp = msgs:: Init { features, remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) ) } ;
1266
1288
self . enqueue_message ( peer, & resp) ;
1267
1289
peer. awaiting_pong_timer_tick_intervals = 0 ;
@@ -2203,7 +2225,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
2203
2225
2204
2226
let features = self . message_handler . chan_handler . provided_node_features ( )
2205
2227
| self . message_handler . route_handler . provided_node_features ( )
2206
- | self . message_handler . onion_message_handler . provided_node_features ( ) ;
2228
+ | self . message_handler . onion_message_handler . provided_node_features ( )
2229
+ | self . message_handler . custom_message_handler . provided_node_features ( ) ;
2207
2230
let announcement = msgs:: UnsignedNodeAnnouncement {
2208
2231
features,
2209
2232
timestamp : self . last_node_announcement_serial . fetch_add ( 1 , Ordering :: AcqRel ) ,
0 commit comments