@@ -72,7 +72,7 @@ impl RoutingMessageHandler for IgnoringMessageHandler {
7272 fn get_next_channel_announcement ( & self , _starting_point : u64 ) ->
7373 Option < ( msgs:: ChannelAnnouncement , Option < msgs:: ChannelUpdate > , Option < msgs:: ChannelUpdate > ) > { None }
7474 fn get_next_node_announcement ( & self , _starting_point : Option < & PublicKey > ) -> Option < msgs:: NodeAnnouncement > { None }
75- fn peer_connected ( & self , _their_node_id : & PublicKey , _init : & msgs:: Init ) { }
75+ fn peer_connected ( & self , _their_node_id : & PublicKey , _init : & msgs:: Init ) -> Result < ( ) , ( ) > { Ok ( ( ) ) }
7676 fn handle_reply_channel_range ( & self , _their_node_id : & PublicKey , _msg : msgs:: ReplyChannelRange ) -> Result < ( ) , LightningError > { Ok ( ( ) ) }
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 ( ( ) ) }
@@ -87,7 +87,7 @@ impl OnionMessageProvider for IgnoringMessageHandler {
8787}
8888impl OnionMessageHandler for IgnoringMessageHandler {
8989 fn handle_onion_message ( & self , _their_node_id : & PublicKey , _msg : & msgs:: OnionMessage ) { }
90- fn peer_connected ( & self , _their_node_id : & PublicKey , _init : & msgs:: Init ) { }
90+ fn peer_connected ( & self , _their_node_id : & PublicKey , _init : & msgs:: Init ) -> Result < ( ) , ( ) > { Ok ( ( ) ) }
9191 fn peer_disconnected ( & self , _their_node_id : & PublicKey , _no_connection_possible : bool ) { }
9292 fn provided_node_features ( & self ) -> NodeFeatures { NodeFeatures :: empty ( ) }
9393 fn provided_init_features ( & self , _their_node_id : & PublicKey ) -> InitFeatures {
@@ -208,7 +208,7 @@ impl ChannelMessageHandler for ErroringMessageHandler {
208208 // msgs::ChannelUpdate does not contain the channel_id field, so we just drop them.
209209 fn handle_channel_update ( & self , _their_node_id : & PublicKey , _msg : & msgs:: ChannelUpdate ) { }
210210 fn peer_disconnected ( & self , _their_node_id : & PublicKey , _no_connection_possible : bool ) { }
211- fn peer_connected ( & self , _their_node_id : & PublicKey , _msg : & msgs:: Init ) { }
211+ fn peer_connected ( & self , _their_node_id : & PublicKey , _init : & msgs:: Init ) -> Result < ( ) , ( ) > { Ok ( ( ) ) }
212212 fn handle_error ( & self , _their_node_id : & PublicKey , _msg : & msgs:: ErrorMessage ) { }
213213 fn provided_node_features ( & self ) -> NodeFeatures { NodeFeatures :: empty ( ) }
214214 fn provided_init_features ( & self , _their_node_id : & PublicKey ) -> InitFeatures {
@@ -1210,14 +1210,18 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
12101210 peer_lock. sync_status = InitSyncTracker :: ChannelsSyncing ( 0 ) ;
12111211 }
12121212
1213- if !msg. features . supports_static_remote_key ( ) {
1214- log_debug ! ( self . logger, "Peer {} does not support static remote key, disconnecting with no_connection_possible" , log_pubkey!( their_node_id) ) ;
1213+ if let Err ( ( ) ) = self . message_handler . route_handler . peer_connected ( & their_node_id, & msg) {
1214+ log_debug ! ( self . logger, "Route Handler decided we couldn't communicate with peer {}" , log_pubkey!( their_node_id) ) ;
1215+ return Err ( PeerHandleError { no_connection_possible : true } . into ( ) ) ;
1216+ }
1217+ if let Err ( ( ) ) = self . message_handler . chan_handler . peer_connected ( & their_node_id, & msg) {
1218+ log_debug ! ( self . logger, "Channel Handler decided we couldn't communicate with peer {}" , log_pubkey!( their_node_id) ) ;
1219+ return Err ( PeerHandleError { no_connection_possible : true } . into ( ) ) ;
1220+ }
1221+ if let Err ( ( ) ) = self . message_handler . onion_message_handler . peer_connected ( & their_node_id, & msg) {
1222+ log_debug ! ( self . logger, "Onion Message Handler decided we couldn't communicate with peer {}" , log_pubkey!( their_node_id) ) ;
12151223 return Err ( PeerHandleError { no_connection_possible : true } . into ( ) ) ;
12161224 }
1217-
1218- self . message_handler . route_handler . peer_connected ( & their_node_id, & msg) ;
1219- self . message_handler . chan_handler . peer_connected ( & their_node_id, & msg) ;
1220- self . message_handler . onion_message_handler . peer_connected ( & their_node_id, & msg) ;
12211225
12221226 peer_lock. their_features = Some ( msg. features ) ;
12231227 return Ok ( None ) ;
0 commit comments