From 787a303ddb81189ccacb39c185f88974e29ab95c Mon Sep 17 00:00:00 2001 From: clemahieu Date: Wed, 26 Nov 2014 01:09:27 -0600 Subject: [PATCH] Merge peers shouldn't put sharing list in to peers. --- rai/core/core.cpp | 2 +- rai/core/core.hpp | 6 +++--- rai/core_test/client.cpp | 10 ++++++++++ rai/core_test/peer_container.cpp | 6 ++++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/rai/core/core.cpp b/rai/core/core.cpp index f225abac..38de7ab6 100644 --- a/rai/core/core.cpp +++ b/rai/core/core.cpp @@ -373,7 +373,7 @@ void rai::network::merge_peers (std::array 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); } diff --git a/rai/core/core.hpp b/rai/core/core.hpp index e7bae06e..623ad730 100644 --- a/rai/core/core.hpp +++ b/rai/core/core.hpp @@ -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 &); std::vector list (); - void refresh_action (); - void queue_next_refresh (); std::vector purge_list (std::chrono::system_clock::time_point const &); size_t size (); bool empty (); diff --git a/rai/core_test/client.cpp b/rai/core_test/client.cpp index 33cb0b78..4922d1ce 100644 --- a/rai/core_test/client.cpp +++ b/rai/core_test/client.cpp @@ -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 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 ()); } \ No newline at end of file diff --git a/rai/core_test/peer_container.cpp b/rai/core_test/peer_container.cpp index 5d6676e5..e3b94f7b 100644 --- a/rai/core_test/peer_container.cpp +++ b/rai/core_test/peer_container.cpp @@ -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); }