Skip to content

Commit 3a8f3b2

Browse files
ensure peer_connected is called before peer_disconnected
1 parent 9789152 commit 3a8f3b2

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

lightning/src/ln/peer_handler.rs

+15-14
Original file line numberDiff line numberDiff line change
@@ -1682,25 +1682,26 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
16821682
peer_lock.sync_status = InitSyncTracker::ChannelsSyncing(0);
16831683
}
16841684

1685-
if let Err(()) = self.message_handler.route_handler.peer_connected(&their_node_id, &msg, peer_lock.inbound_connection) {
1686-
log_debug!(logger, "Route Handler decided we couldn't communicate with peer {}", log_pubkey!(their_node_id));
1687-
return Err(PeerHandleError { }.into());
1688-
}
1689-
if let Err(()) = self.message_handler.chan_handler.peer_connected(&their_node_id, &msg, peer_lock.inbound_connection) {
1690-
log_debug!(logger, "Channel Handler decided we couldn't communicate with peer {}", log_pubkey!(their_node_id));
1691-
return Err(PeerHandleError { }.into());
1692-
}
1693-
if let Err(()) = self.message_handler.onion_message_handler.peer_connected(&their_node_id, &msg, peer_lock.inbound_connection) {
1694-
log_debug!(logger, "Onion Message Handler decided we couldn't communicate with peer {}", log_pubkey!(their_node_id));
1695-
return Err(PeerHandleError { }.into());
1685+
let results = [
1686+
("Route Handler", self.message_handler.route_handler.peer_connected(&their_node_id, &msg, peer_lock.inbound_connection)),
1687+
("Channel Handler", self.message_handler.chan_handler.peer_connected(&their_node_id, &msg, peer_lock.inbound_connection)),
1688+
("Onion Handler", self.message_handler.onion_message_handler.peer_connected(&their_node_id, &msg, peer_lock.inbound_connection)),
1689+
("Custom Message Handler", self.message_handler.custom_message_handler.peer_connected(&their_node_id, &msg, peer_lock.inbound_connection))
1690+
];
1691+
1692+
for (handler_name, result) in &results {
1693+
if result.is_err() {
1694+
log_debug!(logger, "{} decided we couldn't communicate with peer {}", handler_name, log_pubkey!(their_node_id));
1695+
}
16961696
}
1697-
if let Err(()) = self.message_handler.custom_message_handler.peer_connected(&their_node_id, &msg, peer_lock.inbound_connection) {
1698-
log_debug!(logger, "Custom Message Handler decided we couldn't communicate with peer {}", log_pubkey!(their_node_id));
1697+
1698+
peer_lock.their_features = Some(msg.features);
1699+
1700+
if results.iter().any(|(_, result)| result.is_err()) {
16991701
return Err(PeerHandleError { }.into());
17001702
}
17011703

17021704
peer_lock.awaiting_pong_timer_tick_intervals = 0;
1703-
peer_lock.their_features = Some(msg.features);
17041705
return Ok(None);
17051706
} else if peer_lock.their_features.is_none() {
17061707
log_debug!(logger, "Peer {} sent non-Init first message", log_pubkey!(their_node_id));

0 commit comments

Comments
 (0)