From 3291bc1d9aabc703349263006592620f4408d646 Mon Sep 17 00:00:00 2001 From: subtly Date: Thu, 12 Feb 2015 00:17:31 -0500 Subject: [PATCH] perform node discovery when there aren't enough nodes --- libp2p/Host.cpp | 6 +++++- libp2p/NodeTable.cpp | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libp2p/Host.cpp b/libp2p/Host.cpp index 5892121ed..f09468e0d 100644 --- a/libp2p/Host.cpp +++ b/libp2p/Host.cpp @@ -534,7 +534,8 @@ void Host::run(boost::system::error_code const&) keepAlivePeers(); disconnectLatePeers(); - if (m_idealPeerCount && !peerCount()) + auto c = peerCount(); + if (m_idealPeerCount && !c) for (auto p: m_peers) if (p.second->shouldReconnect()) { @@ -544,6 +545,9 @@ void Host::run(boost::system::error_code const&) break; } + if (c < m_idealPeerCount) + m_nodeTable->discover(); + auto runcb = [this](boost::system::error_code const& error) { run(error); }; m_timer->expires_from_now(boost::posix_time::milliseconds(c_timerInterval)); m_timer->async_wait(runcb); diff --git a/libp2p/NodeTable.cpp b/libp2p/NodeTable.cpp index a65ebd53c..15eca291c 100644 --- a/libp2p/NodeTable.cpp +++ b/libp2p/NodeTable.cpp @@ -106,7 +106,9 @@ shared_ptr NodeTable::addNode(Node const& _node) void NodeTable::discover() { - discover(m_node.id); + static chrono::steady_clock::time_point s_lastDiscover = chrono::steady_clock::now() - std::chrono::seconds(30); + if (chrono::steady_clock::now() > s_lastDiscover + std::chrono::seconds(30)) + discover(m_node.id); } list NodeTable::nodes() const