mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-08 17:26:04 +00:00
Fix unexpected Marking peer disconnected in DHT (#6140)
* Don't disconnect peer in DHT if there's an active connection * Merge branch 'unstable' into dont-disconnect-if-active-connection
This commit is contained in:
@@ -1166,8 +1166,19 @@ impl<E: EthSpec> Discovery<E> {
|
|||||||
fn on_dial_failure(&mut self, peer_id: Option<PeerId>, error: &DialError) {
|
fn on_dial_failure(&mut self, peer_id: Option<PeerId>, error: &DialError) {
|
||||||
if let Some(peer_id) = peer_id {
|
if let Some(peer_id) = peer_id {
|
||||||
match error {
|
match error {
|
||||||
|
DialError::Denied { .. } => {
|
||||||
|
if self.network_globals.peers.read().is_connected(&peer_id) {
|
||||||
|
// There's an active connection, so we don’t disconnect the peer.
|
||||||
|
// Lighthouse dials to a peer twice using TCP and QUIC (if QUIC is not
|
||||||
|
// disabled). Usually, one establishes a connection, and the other fails
|
||||||
|
// because the peer allows only one connection per peer.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// set peer as disconnected in discovery DHT
|
||||||
|
debug!(self.log, "Marking peer disconnected in DHT"; "peer_id" => %peer_id, "error" => %ClearDialError(error));
|
||||||
|
self.disconnect_peer(&peer_id);
|
||||||
|
}
|
||||||
DialError::LocalPeerId { .. }
|
DialError::LocalPeerId { .. }
|
||||||
| DialError::Denied { .. }
|
|
||||||
| DialError::NoAddresses
|
| DialError::NoAddresses
|
||||||
| DialError::Transport(_)
|
| DialError::Transport(_)
|
||||||
| DialError::WrongPeerId { .. } => {
|
| DialError::WrongPeerId { .. } => {
|
||||||
|
|||||||
Reference in New Issue
Block a user