Merge peers shouldn't put sharing list in to peers.
This commit is contained in:
parent
9cdf883020
commit
787a303ddb
4 changed files with 18 additions and 6 deletions
|
@ -373,7 +373,7 @@ void rai::network::merge_peers (std::array <rai::endpoint, 8> const & peers_a)
|
|||
{
|
||||
for (auto i (peers_a.begin ()), j (peers_a.end ()); i != j; ++i)
|
||||
{
|
||||
if (!client.peers.insert_peer (*i))
|
||||
if (!client.peers.known_peer (*i))
|
||||
{
|
||||
send_keepalive (*i);
|
||||
}
|
||||
|
|
|
@ -620,14 +620,14 @@ namespace rai {
|
|||
{
|
||||
public:
|
||||
peer_container (rai::endpoint const &);
|
||||
// Unassigned, reserved, self
|
||||
bool not_a_peer (rai::endpoint const &);
|
||||
bool known_peer (rai::endpoint const &);
|
||||
// Returns true if peer was already known
|
||||
bool known_peer (rai::endpoint const &);
|
||||
// Notify of peer we received from
|
||||
bool insert_peer (rai::endpoint const &);
|
||||
void random_fill (std::array <rai::endpoint, 8> &);
|
||||
std::vector <peer_information> list ();
|
||||
void refresh_action ();
|
||||
void queue_next_refresh ();
|
||||
std::vector <rai::peer_information> purge_list (std::chrono::system_clock::time_point const &);
|
||||
size_t size ();
|
||||
bool empty ();
|
||||
|
|
|
@ -257,4 +257,14 @@ TEST (client, scale_num)
|
|||
auto down (rai::scale_down (num));
|
||||
auto up (rai::scale_up (down));
|
||||
ASSERT_EQ (num, up);
|
||||
}
|
||||
|
||||
TEST (client, merge_peers)
|
||||
{
|
||||
rai::system system (24000, 1);
|
||||
std::array <rai::endpoint, 8> endpoints;
|
||||
endpoints.fill (rai::endpoint (boost::asio::ip::address_v6::loopback (), 24000));
|
||||
endpoints [0] = rai::endpoint (boost::asio::ip::address_v6::loopback (), 24001);
|
||||
system.clients [0]->network.merge_peers (endpoints);
|
||||
ASSERT_EQ (0, system.clients [0]->peers.peers.size ());
|
||||
}
|
|
@ -65,9 +65,11 @@ TEST (peer_container, split)
|
|||
auto now (std::chrono::system_clock::now ());
|
||||
rai::endpoint endpoint1 (boost::asio::ip::address_v6::any (), 100);
|
||||
rai::endpoint endpoint2 (boost::asio::ip::address_v6::any (), 101);
|
||||
peers.peers.insert ({endpoint1, now - std::chrono::seconds (1), now - std::chrono::seconds (1)});
|
||||
peers.peers.insert ({endpoint2, now + std::chrono::seconds (1), now + std::chrono::seconds (1)});
|
||||
peers.peers.insert ({endpoint1, now - std::chrono::seconds (1), now});
|
||||
peers.peers.insert ({endpoint2, now + std::chrono::seconds (1), now});
|
||||
ASSERT_EQ (2, peers.peers.size ());
|
||||
auto list (peers.purge_list (now));
|
||||
ASSERT_EQ (1, peers.peers.size ());
|
||||
ASSERT_EQ (1, list.size ());
|
||||
ASSERT_EQ (endpoint2, list [0].endpoint);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue