From feee210af6f756ffdd84e1261ce4cdda7e5d7f22 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 12 Sep 2018 10:10:22 +0100 Subject: [PATCH] net: Check against the next epoch's version when evicting peers --- src/net.cpp | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 1269c8c25..475643199 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -820,22 +820,26 @@ static bool AttemptToEvictConnection(bool fPreferNewConnection) { } const Consensus::Params& params = Params().GetConsensus(); - int nActivationHeight = params.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight; + auto nextEpoch = NextEpoch(height, params); + if (nextEpoch) { + auto idx = nextEpoch.get(); + int nActivationHeight = params.vUpgrades[idx].nActivationHeight; - if (nActivationHeight > 0 && - height < nActivationHeight && - height >= nActivationHeight - NETWORK_UPGRADE_PEER_PREFERENCE_BLOCK_PERIOD) - { - // Find any nodes which don't support Overwinter protocol version - BOOST_FOREACH(const CNodeRef &node, vEvictionCandidates) { - if (node->nVersion < params.vUpgrades[Consensus::UPGRADE_SAPLING].nProtocolVersion) { - vTmpEvictionCandidates.push_back(node); + if (nActivationHeight > 0 && + height < nActivationHeight && + height >= nActivationHeight - NETWORK_UPGRADE_PEER_PREFERENCE_BLOCK_PERIOD) + { + // Find any nodes which don't support the protocol version for the next upgrade + for (const CNodeRef &node : vEvictionCandidates) { + if (node->nVersion < params.vUpgrades[idx].nProtocolVersion) { + vTmpEvictionCandidates.push_back(node); + } } - } - // Prioritize these nodes by replacing eviction set with them - if (vTmpEvictionCandidates.size() > 0) { - vEvictionCandidates = vTmpEvictionCandidates; + // Prioritize these nodes by replacing eviction set with them + if (vTmpEvictionCandidates.size() > 0) { + vEvictionCandidates = vTmpEvictionCandidates; + } } }