@@ -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