@@ -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.
@@ -1192,7 +1212,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
1192
1212
insert_node_id ! ( ) ;
1193
1213
let features = self . message_handler . chan_handler . provided_init_features ( & their_node_id)
1194
1214
| self . message_handler . route_handler . provided_init_features ( & their_node_id)
1195
- | self . message_handler . onion_message_handler . provided_init_features ( & their_node_id) ;
1215
+ | self . message_handler . onion_message_handler . provided_init_features ( & their_node_id)
1216
+ | self . custom_message_handler . provided_init_features ( & their_node_id) ;
1196
1217
let resp = msgs:: Init { features, remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) ) } ;
1197
1218
self . enqueue_message ( peer, & resp) ;
1198
1219
peer. awaiting_pong_timer_tick_intervals = 0 ;
@@ -1206,7 +1227,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
1206
1227
insert_node_id ! ( ) ;
1207
1228
let features = self . message_handler . chan_handler . provided_init_features ( & their_node_id)
1208
1229
| self . message_handler . route_handler . provided_init_features ( & their_node_id)
1209
- | self . message_handler . onion_message_handler . provided_init_features ( & their_node_id) ;
1230
+ | self . message_handler . onion_message_handler . provided_init_features ( & their_node_id)
1231
+ | self . custom_message_handler . provided_init_features ( & their_node_id) ;
1210
1232
let resp = msgs:: Init { features, remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) ) } ;
1211
1233
self . enqueue_message ( peer, & resp) ;
1212
1234
peer. awaiting_pong_timer_tick_intervals = 0 ;
@@ -2148,7 +2170,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
2148
2170
2149
2171
let features = self . message_handler . chan_handler . provided_node_features ( )
2150
2172
| self . message_handler . route_handler . provided_node_features ( )
2151
- | self . message_handler . onion_message_handler . provided_node_features ( ) ;
2173
+ | self . message_handler . onion_message_handler . provided_node_features ( )
2174
+ | self . custom_message_handler . provided_node_features ( ) ;
2152
2175
let announcement = msgs:: UnsignedNodeAnnouncement {
2153
2176
features,
2154
2177
timestamp : self . last_node_announcement_serial . fetch_add ( 1 , Ordering :: AcqRel ) ,
0 commit comments