From 5450c6ff34d2419d8955e1a6a4fef1291d0b92ab Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Thu, 20 Sep 2018 01:09:05 +0300 Subject: [PATCH] fix(network): don't disconnect reserved peers The priority of && and || was borked. --- util/network-devp2p/src/host.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/util/network-devp2p/src/host.rs b/util/network-devp2p/src/host.rs index c43aab4bd8a..538409825ba 100644 --- a/util/network-devp2p/src/host.rs +++ b/util/network-devp2p/src/host.rs @@ -749,10 +749,13 @@ impl Host { // Outgoing connections are allowed as long as their count is <= min_peers // Incoming connections are allowed to take all of the max_peers reserve, or at most half of the slots. let max_ingress = max(max_peers - min_peers, min_peers / 2); - if reserved_only || + if (reserved_only || (s.info.originated && egress_count > min_peers) || - (!s.info.originated && ingress_count > max_ingress) && !self.reserved_nodes.read().contains(&id) { + (!s.info.originated && ingress_count > max_ingress)) && + !self.reserved_nodes.read().contains(&id) + { // only proceed if the connecting peer is reserved. + trace!(target: "network", "Disconnecting non-reserved peer {:?}", id); s.disconnect(io, DisconnectReason::TooManyPeers); kill = true; break;