Skip to content

Commit 81747b2

Browse files
vasildMarcoFalke
authored andcommitted
test: make sure non-IP peers get discouraged and disconnected
1 parent 637bb6d commit 81747b2

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

src/test/denialofservice_tests.cpp

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,18 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
214214
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(),
215215
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
216216

217-
const std::array<CAddress, 2> addr{CAddress{ip(0xa0b0c001), NODE_NONE},
218-
CAddress{ip(0xa0b0c002), NODE_NONE}};
217+
CNetAddr tor_netaddr;
218+
BOOST_REQUIRE(
219+
tor_netaddr.SetSpecial("pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion"));
220+
const CService tor_service{tor_netaddr, Params().GetDefaultPort()};
221+
222+
const std::array<CAddress, 3> addr{CAddress{ip(0xa0b0c001), NODE_NONE},
223+
CAddress{ip(0xa0b0c002), NODE_NONE},
224+
CAddress{tor_service, NODE_NONE}};
219225

220226
const CNetAddr other_addr{ip(0xa0b0ff01)}; // Not any of addr[].
221227

222-
std::array<CNode*, 2> nodes;
228+
std::array<CNode*, 3> nodes;
223229

224230
banman->ClearBanned();
225231
nodes[0] = new CNode{id++, NODE_NETWORK, INVALID_SOCKET, addr[0], /* nKeyedNetGroupIn */ 0,
@@ -267,6 +273,27 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
267273
BOOST_CHECK(banman->IsDiscouraged(addr[1]));
268274
BOOST_CHECK(nodes[1]->fDisconnect);
269275

276+
// Make sure non-IP peers are discouraged and disconnected properly.
277+
278+
nodes[2] = new CNode{id++, NODE_NETWORK, INVALID_SOCKET, addr[2], /* nKeyedNetGroupIn */ 1,
279+
/* nLocalHostNonceIn */ 1, CAddress(), /* pszDest */ "",
280+
ConnectionType::OUTBOUND_FULL_RELAY, /* inbound_onion */ false};
281+
nodes[2]->SetCommonVersion(PROTOCOL_VERSION);
282+
peerLogic->InitializeNode(nodes[2]);
283+
nodes[2]->fSuccessfullyConnected = true;
284+
connman->AddNode(*nodes[2]);
285+
peerLogic->Misbehaving(nodes[2]->GetId(), DISCOURAGEMENT_THRESHOLD, /* message */ "");
286+
{
287+
LOCK(nodes[2]->cs_sendProcessing);
288+
BOOST_CHECK(peerLogic->SendMessages(nodes[2]));
289+
}
290+
BOOST_CHECK(banman->IsDiscouraged(addr[0]));
291+
BOOST_CHECK(banman->IsDiscouraged(addr[1]));
292+
BOOST_CHECK(banman->IsDiscouraged(addr[2]));
293+
BOOST_CHECK(nodes[0]->fDisconnect);
294+
BOOST_CHECK(nodes[1]->fDisconnect);
295+
BOOST_CHECK(nodes[2]->fDisconnect);
296+
270297
for (CNode* node : nodes) {
271298
peerLogic->FinalizeNode(*node);
272299
}

0 commit comments

Comments
 (0)