Skip to content

Commit 3fc06d3

Browse files
committed
[net] remove fUpdateConnectionTime from FinalizeNode
PeerManager can just call directly into CAddrMan::Connected() now.
1 parent 7c4cc67 commit 3fc06d3

File tree

4 files changed

+19
-25
lines changed

4 files changed

+19
-25
lines changed

src/net.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2621,11 +2621,7 @@ void CConnman::StopNodes()
26212621
void CConnman::DeleteNode(CNode* pnode)
26222622
{
26232623
assert(pnode);
2624-
bool fUpdateConnectionTime = false;
2625-
m_msgproc->FinalizeNode(*pnode, fUpdateConnectionTime);
2626-
if (fUpdateConnectionTime) {
2627-
addrman.Connected(pnode->addr);
2628-
}
2624+
m_msgproc->FinalizeNode(*pnode);
26292625
delete pnode;
26302626
}
26312627

src/net.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,7 @@ class NetEventsInterface
770770
virtual void InitializeNode(CNode* pnode) = 0;
771771

772772
/** Handle removal of a peer (clear state) */
773-
virtual void FinalizeNode(const CNode& node, bool& update_connection_time) = 0;
773+
virtual void FinalizeNode(const CNode& node) = 0;
774774

775775
/**
776776
* Process protocol messages received from a given node

src/net_processing.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ class PeerManagerImpl final : public PeerManager
238238

239239
/** Implement NetEventsInterface */
240240
void InitializeNode(CNode* pnode) override;
241-
void FinalizeNode(const CNode& node, bool& fUpdateConnectionTime) override;
241+
void FinalizeNode(const CNode& node) override;
242242
bool ProcessMessages(CNode* pfrom, std::atomic<bool>& interrupt) override;
243243
bool SendMessages(CNode* pto) override EXCLUSIVE_LOCKS_REQUIRED(pto->cs_sendProcessing);
244244

@@ -969,12 +969,12 @@ void PeerManagerImpl::ReattemptInitialBroadcast(CScheduler& scheduler)
969969
scheduler.scheduleFromNow([&] { ReattemptInitialBroadcast(scheduler); }, delta);
970970
}
971971

972-
void PeerManagerImpl::FinalizeNode(const CNode& node, bool& fUpdateConnectionTime)
972+
void PeerManagerImpl::FinalizeNode(const CNode& node)
973973
{
974974
NodeId nodeid = node.GetId();
975-
fUpdateConnectionTime = false;
976-
LOCK(cs_main);
977975
int misbehavior{0};
976+
{
977+
LOCK(cs_main);
978978
{
979979
// We remove the PeerRef from g_peer_map here, but we don't always
980980
// destruct the Peer. Sometimes another thread is still holding a
@@ -991,12 +991,6 @@ void PeerManagerImpl::FinalizeNode(const CNode& node, bool& fUpdateConnectionTim
991991
if (state->fSyncStarted)
992992
nSyncStarted--;
993993

994-
if (node.fSuccessfullyConnected && misbehavior == 0 &&
995-
!node.IsBlockOnlyConn() && !node.IsInboundConn()) {
996-
// Only change visible addrman state for outbound, full-relay peers
997-
fUpdateConnectionTime = true;
998-
}
999-
1000994
for (const QueuedBlock& entry : state->vBlocksInFlight) {
1001995
mapBlocksInFlight.erase(entry.hash);
1002996
}
@@ -1021,6 +1015,14 @@ void PeerManagerImpl::FinalizeNode(const CNode& node, bool& fUpdateConnectionTim
10211015
assert(m_wtxid_relay_peers == 0);
10221016
assert(m_txrequest.Size() == 0);
10231017
}
1018+
} // cs_main
1019+
if (node.fSuccessfullyConnected && misbehavior == 0 &&
1020+
!node.IsBlockOnlyConn() && !node.IsInboundConn()) {
1021+
// Only change visible addrman state for full outbound peers. We don't
1022+
// call Connected() for feeler connections since they don't have
1023+
// fSuccessfullyConnected set.
1024+
m_addrman.Connected(node.addr);
1025+
}
10241026
LogPrint(BCLog::NET, "Cleared nodestate for peer=%d\n", nodeid);
10251027
}
10261028

src/test/denialofservice_tests.cpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,7 @@ BOOST_AUTO_TEST_CASE(outbound_slow_chain_eviction)
117117
BOOST_CHECK(dummyNode1.fDisconnect == true);
118118
SetMockTime(0);
119119

120-
bool dummy;
121-
peerLogic->FinalizeNode(dummyNode1, dummy);
120+
peerLogic->FinalizeNode(dummyNode1);
122121
}
123122

124123
static void AddRandomOutboundPeer(std::vector<CNode *> &vNodes, PeerManager &peerLogic, CConnmanTest* connman)
@@ -199,9 +198,8 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
199198
BOOST_CHECK(vNodes[max_outbound_full_relay-1]->fDisconnect == true);
200199
BOOST_CHECK(vNodes.back()->fDisconnect == false);
201200

202-
bool dummy;
203201
for (const CNode *node : vNodes) {
204-
peerLogic->FinalizeNode(*node, dummy);
202+
peerLogic->FinalizeNode(*node);
205203
}
206204

207205
connman->ClearNodes();
@@ -249,9 +247,8 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
249247
BOOST_CHECK(banman->IsDiscouraged(addr1)); // Expect both 1 and 2
250248
BOOST_CHECK(banman->IsDiscouraged(addr2)); // to be discouraged now
251249

252-
bool dummy;
253-
peerLogic->FinalizeNode(dummyNode1, dummy);
254-
peerLogic->FinalizeNode(dummyNode2, dummy);
250+
peerLogic->FinalizeNode(dummyNode1);
251+
peerLogic->FinalizeNode(dummyNode2);
255252
}
256253

257254
BOOST_AUTO_TEST_CASE(DoS_bantime)
@@ -279,8 +276,7 @@ BOOST_AUTO_TEST_CASE(DoS_bantime)
279276
}
280277
BOOST_CHECK(banman->IsDiscouraged(addr));
281278

282-
bool dummy;
283-
peerLogic->FinalizeNode(dummyNode, dummy);
279+
peerLogic->FinalizeNode(dummyNode);
284280
}
285281

286282
class TxOrphanageTest : public TxOrphanage

0 commit comments

Comments
 (0)