Allow local preconfigured peers (#1105)
This commit is contained in:
parent
4c33a0fa0a
commit
af1f6d061f
4 changed files with 13 additions and 8 deletions
|
@ -177,15 +177,20 @@ void nano::network::send_keepalive (nano::endpoint const & endpoint_a)
|
|||
});
|
||||
}
|
||||
|
||||
void nano::node::keepalive (std::string const & address_a, uint16_t port_a)
|
||||
void nano::node::keepalive (std::string const & address_a, uint16_t port_a, bool preconfigured_peer_a)
|
||||
{
|
||||
auto node_l (shared_from_this ());
|
||||
network.resolver.async_resolve (boost::asio::ip::udp::resolver::query (address_a, std::to_string (port_a)), [node_l, address_a, port_a](boost::system::error_code const & ec, boost::asio::ip::udp::resolver::iterator i_a) {
|
||||
network.resolver.async_resolve (boost::asio::ip::udp::resolver::query (address_a, std::to_string (port_a)), [node_l, address_a, port_a, preconfigured_peer_a](boost::system::error_code const & ec, boost::asio::ip::udp::resolver::iterator i_a) {
|
||||
if (!ec)
|
||||
{
|
||||
for (auto i (i_a), n (boost::asio::ip::udp::resolver::iterator{}); i != n; ++i)
|
||||
{
|
||||
node_l->send_keepalive (nano::map_endpoint_to_v6 (i->endpoint ()));
|
||||
auto endpoint (nano::map_endpoint_to_v6 (i->endpoint ()));
|
||||
node_l->send_keepalive (endpoint);
|
||||
if (preconfigured_peer_a)
|
||||
{
|
||||
node_l->peers.insert (endpoint, nano::protocol_version, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -2105,7 +2110,7 @@ void nano::node::keepalive_preconfigured (std::vector<std::string> const & peers
|
|||
{
|
||||
for (auto i (peers_a.begin ()), n (peers_a.end ()); i != n; ++i)
|
||||
{
|
||||
keepalive (*i, nano::network::node_port);
|
||||
keepalive (*i, nano::network::node_port, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -468,7 +468,7 @@ public:
|
|||
}
|
||||
void send_keepalive (nano::endpoint const &);
|
||||
bool copy_with_compaction (boost::filesystem::path const &);
|
||||
void keepalive (std::string const &, uint16_t);
|
||||
void keepalive (std::string const &, uint16_t, bool = false);
|
||||
void start ();
|
||||
void stop ();
|
||||
std::shared_ptr<nano::node> shared ();
|
||||
|
|
|
@ -443,11 +443,11 @@ bool nano::peer_container::reachout (nano::endpoint const & endpoint_a)
|
|||
return error;
|
||||
}
|
||||
|
||||
bool nano::peer_container::insert (nano::endpoint const & endpoint_a, unsigned version_a)
|
||||
bool nano::peer_container::insert (nano::endpoint const & endpoint_a, unsigned version_a, bool preconfigured_a)
|
||||
{
|
||||
assert (endpoint_a.address ().is_v6 ());
|
||||
auto unknown (false);
|
||||
auto result (not_a_peer (endpoint_a, false));
|
||||
auto result (!preconfigured_a && not_a_peer (endpoint_a, false));
|
||||
if (!result)
|
||||
{
|
||||
if (version_a >= nano::protocol_version_min)
|
||||
|
|
|
@ -72,7 +72,7 @@ public:
|
|||
// Returns true if peer was already known
|
||||
bool known_peer (nano::endpoint const &);
|
||||
// Notify of peer we received from
|
||||
bool insert (nano::endpoint const &, unsigned);
|
||||
bool insert (nano::endpoint const &, unsigned, bool = false);
|
||||
std::unordered_set<nano::endpoint> random_set (size_t);
|
||||
void random_fill (std::array<nano::endpoint, 8> &);
|
||||
// Request a list of the top known representatives
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue