From 8ee7883c53425576d7b66e548e4c01a0e058ef72 Mon Sep 17 00:00:00 2001 From: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Fri, 5 Apr 2019 17:24:15 -0400 Subject: [PATCH] peerdiscovery: Exception added for supporting construction error --- src/dhtrunner.cpp | 30 +++++++++++++++++++++--------- src/peer_discovery.cpp | 2 +- tests/peerdiscoverytester.cpp | 16 +++++++--------- tests/peerdiscoverytester.h | 4 ++-- 4 files changed, 31 insertions(+), 21 deletions(-) diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index ae68fdf5..3812043c 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -150,21 +150,34 @@ DhtRunner::run(const SockAddr& local4, const SockAddr& local6, const DhtRunner:: }); if (config.peer_discovery or config.peer_publish) { - peerDiscovery4_.reset(new PeerDiscovery(AF_INET, port_multicast)); - peerDiscovery6_.reset(new PeerDiscovery(AF_INET6, port_multicast)); + try { + peerDiscovery4_.reset(new PeerDiscovery(AF_INET, port_multicast)); + }catch(std::exception &exception){ + perror(exception.what()); + } + try{ + peerDiscovery6_.reset(new PeerDiscovery(AF_INET6, port_multicast)); + }catch(std::exception &exception){ + perror(exception.what()); + } } if (config.peer_discovery) { using sig = void (DhtRunner::*)(const InfoHash&, const SockAddr&); - peerDiscovery4_->startDiscovery(std::bind(static_cast<sig>(&DhtRunner::bootstrap), - this, - std::placeholders::_1,std::placeholders::_2)); - peerDiscovery6_->startDiscovery(std::bind(static_cast<sig>(&DhtRunner::bootstrap), + if (peerDiscovery4_) + peerDiscovery4_->startDiscovery(std::bind(static_cast<sig>(&DhtRunner::bootstrap), this, std::placeholders::_1,std::placeholders::_2)); + + if (peerDiscovery6_) + peerDiscovery6_->startDiscovery(std::bind(static_cast<sig>(&DhtRunner::bootstrap), + this, + std::placeholders::_1,std::placeholders::_2)); } if (config.peer_publish) { - peerDiscovery4_->startPublish(getNodeId(),getBoundPort()); - peerDiscovery6_->startPublish(getNodeId(),getBoundPort()); + if (peerDiscovery4_) + peerDiscovery4_->startPublish(getNodeId(), getBoundPort(AF_INET)); + if (peerDiscovery6_) + peerDiscovery6_->startPublish(getNodeId(), getBoundPort(AF_INET6)); } } @@ -173,7 +186,6 @@ void DhtRunner::bootstrap(const InfoHash& id, const SockAddr& address) { std::unique_lock<std::mutex> lck(storage_mtx); pending_ops_prio.emplace([id, address](SecureDht& dht) mutable { - std::cout<<address.getPort()<<std::endl; dht.insertNode(id, address); }); } diff --git a/src/peer_discovery.cpp b/src/peer_discovery.cpp index 972f265d..b4885a22 100644 --- a/src/peer_discovery.cpp +++ b/src/peer_discovery.cpp @@ -158,7 +158,7 @@ PeerDiscovery::socketJoinMulticast(int sockfd, sa_family_t family) break; } - } + } } void diff --git a/tests/peerdiscoverytester.cpp b/tests/peerdiscoverytester.cpp index 42e4ad28..85c164e9 100644 --- a/tests/peerdiscoverytester.cpp +++ b/tests/peerdiscoverytester.cpp @@ -30,7 +30,7 @@ void PeerDiscoveryTester::testTransmission_ipv4(){ // Node for getnode id dht::InfoHash data_n = dht::InfoHash::get("applepin"); int port = 2222; - in_port_t port_n = 50000;; + in_port_t port_n = 50000; dht::PeerDiscovery test_n(AF_INET, port); dht::PeerDiscovery test_s(AF_INET, port); @@ -49,21 +49,19 @@ void PeerDiscoveryTester::testTransmission_ipv4(){ test_s.join(); } -/*void PeerDiscoveryTester::testTransmission_ipv6(){ +void PeerDiscoveryTester::testTransmission_ipv6(){ // Node for getnode id dht::InfoHash data_n = dht::InfoHash::get("applepin"); - int port = 2222; - int port_n = 50000;; + int port = 3333; + in_port_t port_n = 50001; dht::PeerDiscovery test_n(AF_INET6,port); dht::PeerDiscovery test_s(AF_INET6,port); test_s.startDiscovery([&](const dht::InfoHash& node, const dht::SockAddr& addr){ - - CPPUNIT_ASSERT_MESSAGE("Data Receive Incorrect", memcmp(node.data(),data_n.data(),dht::InfoHash::size()) == 0 ); - CPPUNIT_ASSERT_MESSAGE("Port Receive Incorrect", addr.getPort() == 50000); - + CPPUNIT_ASSERT_EQUAL(data_n, node); + CPPUNIT_ASSERT_EQUAL(port_n, addr.getPort()); }); test_n.startPublish(data_n,port_n); @@ -74,7 +72,7 @@ void PeerDiscoveryTester::testTransmission_ipv4(){ test_n.join(); test_s.join(); -}*/ +} void PeerDiscoveryTester::tearDown(){} diff --git a/tests/peerdiscoverytester.h b/tests/peerdiscoverytester.h index 3d5438cc..b1f1dd9e 100644 --- a/tests/peerdiscoverytester.h +++ b/tests/peerdiscoverytester.h @@ -30,7 +30,7 @@ class PeerDiscoveryTester : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(PeerDiscoveryTester); CPPUNIT_TEST(testTransmission_ipv4); - // CPPUNIT_TEST(testTransmission_ipv6); + CPPUNIT_TEST(testTransmission_ipv6); CPPUNIT_TEST_SUITE_END(); public: @@ -49,7 +49,7 @@ class PeerDiscoveryTester : public CppUnit::TestFixture { /** * Test Multicast Transmission Ipv6 */ - //void testTransmission_ipv6(); + void testTransmission_ipv6(); }; -- GitLab