Skip to content

Commit 1e2093c

Browse files
committed
partial bitcoin#20187: test-before-evict bugfix and improvements for block-relay-only peers
Contains only daf5553
1 parent d4d4f14 commit 1e2093c

File tree

5 files changed

+13
-11
lines changed

5 files changed

+13
-11
lines changed

src/net.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3310,7 +3310,7 @@ void CConnman::DeleteNode(CNode* pnode)
33103310
{
33113311
assert(pnode);
33123312
bool fUpdateConnectionTime = false;
3313-
m_msgproc->FinalizeNode(pnode->GetId(), fUpdateConnectionTime);
3313+
m_msgproc->FinalizeNode(*pnode, fUpdateConnectionTime);
33143314
if(fUpdateConnectionTime) {
33153315
addrman.Connected(pnode->addr);
33163316
}

src/net.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ class NetEventsInterface
708708
virtual bool ProcessMessages(CNode* pnode, std::atomic<bool>& interrupt) = 0;
709709
virtual bool SendMessages(CNode* pnode) = 0;
710710
virtual void InitializeNode(CNode* pnode) = 0;
711-
virtual void FinalizeNode(NodeId id, bool& update_connection_time) = 0;
711+
virtual void FinalizeNode(const CNode& node, bool& update_connection_time) = 0;
712712

713713
protected:
714714
/**

src/net_processing.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -930,7 +930,8 @@ void PeerLogicValidation::ReattemptInitialBroadcast(CScheduler& scheduler) const
930930
scheduler.scheduleFromNow([&] { ReattemptInitialBroadcast(scheduler); }, delta.count());
931931
}
932932

933-
void PeerLogicValidation::FinalizeNode(NodeId nodeid, bool& fUpdateConnectionTime) {
933+
void PeerLogicValidation::FinalizeNode(const CNode& node, bool& fUpdateConnectionTime) {
934+
NodeId nodeid = node.GetId();
934935
fUpdateConnectionTime = false;
935936
LOCK(cs_main);
936937
CNodeState *state = State(nodeid);
@@ -939,7 +940,8 @@ void PeerLogicValidation::FinalizeNode(NodeId nodeid, bool& fUpdateConnectionTim
939940
if (state->fSyncStarted)
940941
nSyncStarted--;
941942

942-
if (state->nMisbehavior == 0 && state->fCurrentlyConnected) {
943+
if (state->nMisbehavior == 0 && state->fCurrentlyConnected /* && !node.IsBlockOnlyConn() */) {
944+
// Note: we avoid changing visible addrman state for block-relay-only peers
943945
fUpdateConnectionTime = true;
944946
}
945947

src/net_processing.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class PeerLogicValidation final : public CValidationInterface, public NetEventsI
5858
/** Initialize a peer by adding it to mapNodeState and pushing a message requesting its version */
5959
void InitializeNode(CNode* pnode) override;
6060
/** Handle removal of a peer by updating various state and removing it from mapNodeState */
61-
void FinalizeNode(NodeId nodeid, bool& fUpdateConnectionTime) override;
61+
void FinalizeNode(const CNode& node, bool& fUpdateConnectionTime) override;
6262
/**
6363
* Process protocol messages received from a given node
6464
*

src/test/denialofservice_tests.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ BOOST_AUTO_TEST_CASE(outbound_slow_chain_eviction)
134134
SetMockTime(0);
135135

136136
bool dummy;
137-
peerLogic->FinalizeNode(dummyNode1.GetId(), dummy);
137+
peerLogic->FinalizeNode(dummyNode1, dummy);
138138
}
139139

140140
static void AddRandomOutboundPeer(std::vector<CNode *> &vNodes, PeerLogicValidation &peerLogic, CConnmanTest* connman)
@@ -219,7 +219,7 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
219219

220220
bool dummy;
221221
for (const CNode *node : vNodes) {
222-
peerLogic->FinalizeNode(node->GetId(), dummy);
222+
peerLogic->FinalizeNode(*node, dummy);
223223
}
224224

225225
connman->ClearNodes();
@@ -278,8 +278,8 @@ BOOST_AUTO_TEST_CASE(DoS_banning)
278278
BOOST_CHECK(banman->IsDiscouraged(addr2));
279279

280280
bool dummy;
281-
peerLogic->FinalizeNode(dummyNode1.GetId(), dummy);
282-
peerLogic->FinalizeNode(dummyNode2.GetId(), dummy);
281+
peerLogic->FinalizeNode(dummyNode1, dummy);
282+
peerLogic->FinalizeNode(dummyNode2, dummy);
283283
}
284284

285285
BOOST_AUTO_TEST_CASE(DoS_banscore)
@@ -328,7 +328,7 @@ BOOST_AUTO_TEST_CASE(DoS_banscore)
328328
gArgs.ForceSetArg("-banscore", ToString(DEFAULT_BANSCORE_THRESHOLD));
329329

330330
bool dummy;
331-
peerLogic->FinalizeNode(dummyNode1.GetId(), dummy);
331+
peerLogic->FinalizeNode(dummyNode1, dummy);
332332
}
333333

334334
BOOST_AUTO_TEST_CASE(DoS_bantime)
@@ -361,7 +361,7 @@ BOOST_AUTO_TEST_CASE(DoS_bantime)
361361
BOOST_CHECK(banman->IsDiscouraged(addr));
362362

363363
bool dummy;
364-
peerLogic->FinalizeNode(dummyNode.GetId(), dummy);
364+
peerLogic->FinalizeNode(dummyNode, dummy);
365365
}
366366

367367
static CTransactionRef RandomOrphan()

0 commit comments

Comments
 (0)