diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 3f8c221734a..17f8192cb5c 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -555,7 +555,7 @@ public: ServiceFlags GetDesirableServiceFlags(ServiceFlags services) const override; private: - void ProcessMessage(CNode& pfrom, const std::string& msg_type, DataStream& vRecv, std::chrono::microseconds time_received, + void ProcessMessage(Peer& peer, CNode& pfrom, const std::string& msg_type, DataStream& vRecv, std::chrono::microseconds time_received, const std::atomic& interruptMsgProc) EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex, !m_most_recent_block_mutex, !m_headers_presync_mutex, g_msgproc_mutex, !m_tx_download_mutex); @@ -3544,7 +3544,7 @@ void PeerManagerImpl::PushPrivateBroadcastTx(CNode& node) MakeAndPushMessage(node, NetMsgType::INV, std::vector{{CInv{MSG_TX, tx->GetHash().ToUint256()}}}); } -void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type, DataStream& vRecv, +void PeerManagerImpl::ProcessMessage(Peer& peer_alias_removed_in_later_commit, CNode& pfrom, const std::string& msg_type, DataStream& vRecv, const std::chrono::microseconds time_received, const std::atomic& interruptMsgProc) { @@ -3552,8 +3552,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type, LogDebug(BCLog::NET, "received: %s (%u bytes) peer=%d\n", SanitizeString(msg_type), vRecv.size(), pfrom.GetId()); - PeerRef peer = GetPeerRef(pfrom.GetId()); - if (peer == nullptr) return; + Peer* peer{&peer_alias_removed_in_later_commit}; if (msg_type == NetMsgType::VERSION) { if (pfrom.nVersion != 0) { @@ -5241,7 +5240,7 @@ bool PeerManagerImpl::ProcessMessages(CNode& node, std::atomic& interruptM } try { - ProcessMessage(*pfrom, msg.m_type, msg.m_recv, msg.m_time, interruptMsgProc); + ProcessMessage(*peer, *pfrom, msg.m_type, msg.m_recv, msg.m_time, interruptMsgProc); if (interruptMsgProc) return false; { LOCK(peer->m_getdata_requests_mutex);