Merge pull request #3737
1590183
p2p: fix fallback seed node usage (moneromooo-monero)
This commit is contained in:
commit
abfff766e5
|
@ -316,6 +316,7 @@ namespace nodetool
|
||||||
std::list<epee::net_utils::network_address> m_priority_peers;
|
std::list<epee::net_utils::network_address> m_priority_peers;
|
||||||
std::vector<epee::net_utils::network_address> m_exclusive_peers;
|
std::vector<epee::net_utils::network_address> m_exclusive_peers;
|
||||||
std::vector<epee::net_utils::network_address> m_seed_nodes;
|
std::vector<epee::net_utils::network_address> m_seed_nodes;
|
||||||
|
bool m_fallback_seed_nodes_added;
|
||||||
std::list<nodetool::peerlist_entry> m_command_line_peers;
|
std::list<nodetool::peerlist_entry> m_command_line_peers;
|
||||||
uint64_t m_peer_livetime;
|
uint64_t m_peer_livetime;
|
||||||
//keep connections to initiate some interactions
|
//keep connections to initiate some interactions
|
||||||
|
|
|
@ -405,6 +405,7 @@ namespace nodetool
|
||||||
bool res = handle_command_line(vm);
|
bool res = handle_command_line(vm);
|
||||||
CHECK_AND_ASSERT_MES(res, false, "Failed to handle command line");
|
CHECK_AND_ASSERT_MES(res, false, "Failed to handle command line");
|
||||||
|
|
||||||
|
m_fallback_seed_nodes_added = false;
|
||||||
if (m_nettype == cryptonote::TESTNET)
|
if (m_nettype == cryptonote::TESTNET)
|
||||||
{
|
{
|
||||||
memcpy(&m_network_id, &::config::testnet::NETWORK_ID, 16);
|
memcpy(&m_network_id, &::config::testnet::NETWORK_ID, 16);
|
||||||
|
@ -498,6 +499,7 @@ namespace nodetool
|
||||||
|
|
||||||
for (const auto &peer: get_seed_nodes(cryptonote::MAINNET))
|
for (const auto &peer: get_seed_nodes(cryptonote::MAINNET))
|
||||||
full_addrs.insert(peer);
|
full_addrs.insert(peer);
|
||||||
|
m_fallback_seed_nodes_added = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1134,7 +1136,6 @@ namespace nodetool
|
||||||
|
|
||||||
size_t try_count = 0;
|
size_t try_count = 0;
|
||||||
size_t current_index = crypto::rand<size_t>()%m_seed_nodes.size();
|
size_t current_index = crypto::rand<size_t>()%m_seed_nodes.size();
|
||||||
bool fallback_nodes_added = false;
|
|
||||||
while(true)
|
while(true)
|
||||||
{
|
{
|
||||||
if(m_net_server.is_stop_signal_sent())
|
if(m_net_server.is_stop_signal_sent())
|
||||||
|
@ -1144,15 +1145,21 @@ namespace nodetool
|
||||||
break;
|
break;
|
||||||
if(++try_count > m_seed_nodes.size())
|
if(++try_count > m_seed_nodes.size())
|
||||||
{
|
{
|
||||||
if (!fallback_nodes_added)
|
if (!m_fallback_seed_nodes_added)
|
||||||
{
|
{
|
||||||
MWARNING("Failed to connect to any of seed peers, trying fallback seeds");
|
MWARNING("Failed to connect to any of seed peers, trying fallback seeds");
|
||||||
|
current_index = m_seed_nodes.size();
|
||||||
for (const auto &peer: get_seed_nodes(m_nettype))
|
for (const auto &peer: get_seed_nodes(m_nettype))
|
||||||
{
|
{
|
||||||
MDEBUG("Fallback seed node: " << peer);
|
MDEBUG("Fallback seed node: " << peer);
|
||||||
append_net_address(m_seed_nodes, peer);
|
append_net_address(m_seed_nodes, peer);
|
||||||
}
|
}
|
||||||
fallback_nodes_added = true;
|
m_fallback_seed_nodes_added = true;
|
||||||
|
if (current_index == m_seed_nodes.size())
|
||||||
|
{
|
||||||
|
MWARNING("No fallback seeds, continuing without seeds");
|
||||||
|
break;
|
||||||
|
}
|
||||||
// continue for another few cycles
|
// continue for another few cycles
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue