Skip to content

Commit f8b3058

Browse files
committed
[net processing] Add Peer& arg to MaybeDiscourageAndDisconnect()
Refactor only. No change in behaviour.
1 parent 489030f commit f8b3058

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

src/net_processing.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -302,9 +302,10 @@ class PeerManagerImpl final : public PeerManager
302302
/** Maybe disconnect a peer and discourage future connections from its address.
303303
*
304304
* @param[in] pnode The node to check.
305+
* @param[in] peer The peer object to check.
305306
* @return True if the peer was marked for disconnection in this function
306307
*/
307-
bool MaybeDiscourageAndDisconnect(CNode& pnode);
308+
bool MaybeDiscourageAndDisconnect(CNode& pnode, Peer& peer);
308309

309310
void ProcessOrphanTx(std::set<uint256>& orphan_work_set) EXCLUSIVE_LOCKS_REQUIRED(cs_main, g_cs_orphans);
310311
/** Process a single headers message from a peer. */
@@ -3996,43 +3997,39 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
39963997
return;
39973998
}
39983999

3999-
bool PeerManagerImpl::MaybeDiscourageAndDisconnect(CNode& pnode)
4000+
bool PeerManagerImpl::MaybeDiscourageAndDisconnect(CNode& pnode, Peer& peer)
40004001
{
4001-
const NodeId peer_id{pnode.GetId()};
4002-
PeerRef peer = GetPeerRef(peer_id);
4003-
if (peer == nullptr) return false;
4004-
40054002
{
4006-
LOCK(peer->m_misbehavior_mutex);
4003+
LOCK(peer.m_misbehavior_mutex);
40074004

40084005
// There's nothing to do if the m_should_discourage flag isn't set
4009-
if (!peer->m_should_discourage) return false;
4006+
if (!peer.m_should_discourage) return false;
40104007

4011-
peer->m_should_discourage = false;
4008+
peer.m_should_discourage = false;
40124009
} // peer.m_misbehavior_mutex
40134010

40144011
if (pnode.HasPermission(PF_NOBAN)) {
40154012
// We never disconnect or discourage peers for bad behavior if they have the NOBAN permission flag
4016-
LogPrintf("Warning: not punishing noban peer %d!\n", peer_id);
4013+
LogPrintf("Warning: not punishing noban peer %d!\n", peer.m_id);
40174014
return false;
40184015
}
40194016

40204017
if (pnode.IsManualConn()) {
40214018
// We never disconnect or discourage manual peers for bad behavior
4022-
LogPrintf("Warning: not punishing manually connected peer %d!\n", peer_id);
4019+
LogPrintf("Warning: not punishing manually connected peer %d!\n", peer.m_id);
40234020
return false;
40244021
}
40254022

40264023
if (pnode.addr.IsLocal()) {
40274024
// We disconnect local peers for bad behavior but don't discourage (since that would discourage
40284025
// all peers on the same local address)
4029-
LogPrintf("Warning: disconnecting but not discouraging local peer %d!\n", peer_id);
4026+
LogPrintf("Warning: disconnecting but not discouraging local peer %d!\n", peer.m_id);
40304027
pnode.fDisconnect = true;
40314028
return true;
40324029
}
40334030

40344031
// Normal case: Disconnect the peer and discourage all nodes sharing the address
4035-
LogPrint(BCLog::NET, "Disconnecting and discouraging peer %d!\n", peer_id);
4032+
LogPrint(BCLog::NET, "Disconnecting and discouraging peer %d!\n", peer.m_id);
40364033
if (m_banman) m_banman->Discourage(pnode.addr);
40374034
m_connman.DisconnectNode(pnode.addr);
40384035
return true;
@@ -4319,11 +4316,12 @@ class CompareInvMempoolOrder
43194316
bool PeerManagerImpl::SendMessages(CNode* pto)
43204317
{
43214318
PeerRef peer = GetPeerRef(pto->GetId());
4319+
if (!peer) return false;
43224320
const Consensus::Params& consensusParams = m_chainparams.GetConsensus();
43234321

43244322
// We must call MaybeDiscourageAndDisconnect first, to ensure that we'll
43254323
// disconnect misbehaving peers even before the version handshake is complete.
4326-
if (MaybeDiscourageAndDisconnect(*pto)) return true;
4324+
if (MaybeDiscourageAndDisconnect(*pto, *peer)) return true;
43274325

43284326
// Don't send anything until the version handshake is complete
43294327
if (!pto->fSuccessfullyConnected || pto->fDisconnect)

0 commit comments

Comments
 (0)