aboutsummaryrefslogtreecommitdiff
path: root/src/test/net_tests.cpp
diff options
context:
space:
mode:
authorEthan Heilman <Ethan.R.Heilman@gmail.com>2016-06-17 00:10:07 -0400
committerEthanHeilman <ethan.r.heilman@gmail.com>2016-08-23 16:26:42 -0400
commitdbb1f640e67da25f0a41b9d2e696b789d2fd4e0d (patch)
tree1f2478a03fa0005d04411ee3c8b671263e319a2a /src/test/net_tests.cpp
parent8250de13587ed05ca45df3e12c5dc9bcb1500e2c (diff)
downloadbitcoin-dbb1f640e67da25f0a41b9d2e696b789d2fd4e0d.tar.xz
Added feeler connections increasing good addrs in the tried table.
Tests if addresses are online or offline by briefly connecting to them. These short lived connections are referred to as feeler connections. Feeler connections are designed to increase the number of fresh online addresses in tried by selecting and connecting to addresses in new. One feeler connection is attempted on average once every two minutes. This change was suggested as Countermeasure 4 in Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Ethan Heilman, Alison Kendler, Aviv Zohar, Sharon Goldberg. ePrint Archive Report 2015/263. March 2015.
Diffstat (limited to 'src/test/net_tests.cpp')
-rw-r--r--src/test/net_tests.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp
index 6511e6ffa2..267d1b55e1 100644
--- a/src/test/net_tests.cpp
+++ b/src/test/net_tests.cpp
@@ -150,4 +150,26 @@ BOOST_AUTO_TEST_CASE(caddrdb_read_corrupted)
BOOST_CHECK(addrman2.size() == 0);
}
+BOOST_AUTO_TEST_CASE(cnode_simple_test)
+{
+ SOCKET hSocket = INVALID_SOCKET;
+
+ in_addr ipv4Addr;
+ ipv4Addr.s_addr = 0xa0b0c001;
+
+ CAddress addr = CAddress(CService(ipv4Addr, 7777), NODE_NETWORK);
+ std::string pszDest = "";
+ bool fInboundIn = false;
+
+ // Test that fFeeler is false by default.
+ CNode* pnode1 = new CNode(hSocket, addr, pszDest, fInboundIn);
+ BOOST_CHECK(pnode1->fInbound == false);
+ BOOST_CHECK(pnode1->fFeeler == false);
+
+ fInboundIn = true;
+ CNode* pnode2 = new CNode(hSocket, addr, pszDest, fInboundIn);
+ BOOST_CHECK(pnode2->fInbound == true);
+ BOOST_CHECK(pnode2->fFeeler == false);
+}
+
BOOST_AUTO_TEST_SUITE_END()