@@ -77,6 +77,9 @@ impl RoutingMessageHandler for IgnoringMessageHandler {
7777 fn handle_reply_short_channel_ids_end ( & self , _their_node_id : & PublicKey , _msg : msgs:: ReplyShortChannelIdsEnd ) -> Result < ( ) , LightningError > { Ok ( ( ) ) }
7878 fn handle_query_channel_range ( & self , _their_node_id : & PublicKey , _msg : msgs:: QueryChannelRange ) -> Result < ( ) , LightningError > { Ok ( ( ) ) }
7979 fn handle_query_short_channel_ids ( & self , _their_node_id : & PublicKey , _msg : msgs:: QueryShortChannelIds ) -> Result < ( ) , LightningError > { Ok ( ( ) ) }
80+ fn provided_init_features ( & self , _their_node_id : & PublicKey ) -> InitFeatures {
81+ InitFeatures :: empty ( )
82+ }
8083}
8184impl OnionMessageProvider for IgnoringMessageHandler {
8285 fn next_onion_message_for_peer ( & self , _peer_node_id : PublicKey ) -> Option < msgs:: OnionMessage > { None }
@@ -203,6 +206,11 @@ impl ChannelMessageHandler for ErroringMessageHandler {
203206 fn peer_connected ( & self , _their_node_id : & PublicKey , _msg : & msgs:: Init ) { }
204207 fn handle_error ( & self , _their_node_id : & PublicKey , _msg : & msgs:: ErrorMessage ) { }
205208 fn provided_node_features ( & self ) -> NodeFeatures { NodeFeatures :: empty ( ) }
209+ fn provided_init_features ( & self , _their_node_id : & PublicKey ) -> InitFeatures {
210+ // Use our known channel feature set as peers may otherwise not be willing to talk to us at
211+ // all.
212+ InitFeatures :: known_channel_features ( )
213+ }
206214}
207215impl Deref for ErroringMessageHandler {
208216 type Target = ErroringMessageHandler ;
@@ -1052,7 +1060,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
10521060
10531061 peer. their_node_id = Some ( their_node_id) ;
10541062 insert_node_id ! ( ) ;
1055- let features = InitFeatures :: known ( ) ;
1063+ let features = self . message_handler . chan_handler . provided_init_features ( & their_node_id)
1064+ . or ( self . message_handler . route_handler . provided_init_features ( & their_node_id) ) ;
10561065 let resp = msgs:: Init { features, remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) ) } ;
10571066 self . enqueue_message ( peer, & resp) ;
10581067 peer. awaiting_pong_timer_tick_intervals = 0 ;
@@ -1064,7 +1073,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
10641073 peer. pending_read_is_header = true ;
10651074 peer. their_node_id = Some ( their_node_id) ;
10661075 insert_node_id ! ( ) ;
1067- let features = InitFeatures :: known ( ) ;
1076+ let features = self . message_handler . chan_handler . provided_init_features ( & their_node_id)
1077+ . or ( self . message_handler . route_handler . provided_init_features ( & their_node_id) ) ;
10681078 let resp = msgs:: Init { features, remote_network_address : filter_addresses ( peer. their_net_address . clone ( ) ) } ;
10691079 self . enqueue_message ( peer, & resp) ;
10701080 peer. awaiting_pong_timer_tick_intervals = 0 ;
0 commit comments