diff --git a/src/net.cpp b/src/net.cpp index 653247fbb4cef9..3c866db44ded50 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -3507,9 +3507,6 @@ void CConnman::ThreadOpenConnections(const std::vector connect, CDe std::tie(addr, addr_last_try) = addrman.Select(false, preferred_net); } - auto dmn = mnList.GetMNByService(addr); - bool isMasternode = dmn != nullptr; - // Require outbound IPv4/IPv6 connections, other than feelers, to be to distinct network groups if (!fFeeler && outbound_ipv46_peer_netgroups.count(m_netgroupman.GetGroup(addr))) { continue; @@ -3520,10 +3517,6 @@ void CConnman::ThreadOpenConnections(const std::vector connect, CDe break; } - // don't try to connect to masternodes that we already have a connection to (most likely inbound) - if (isMasternode && setConnectedMasternodes.count(dmn->proTxHash)) - continue; - // don't connect to ourselves if (addr.GetPort() == GetListenPort() && IsLocal(addr)) { break; @@ -3566,6 +3559,10 @@ void CConnman::ThreadOpenConnections(const std::vector connect, CDe continue; } + // don't try to connect to masternodes that we already have a connection to (most likely inbound) + if (auto dmn = mnList.GetMNByService(addr); dmn && setConnectedMasternodes.count(dmn->proTxHash)) + continue; + addrConnect = addr; break; }