aboutsummaryrefslogtreecommitdiff
path: root/src/net_processing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net_processing.cpp')
-rw-r--r--src/net_processing.cpp21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index 25c65c7090..1bff41514e 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -4854,8 +4854,6 @@ bool PeerManagerImpl::ProcessMessages(CNode* pfrom, std::atomic<bool>& interrupt
{
AssertLockHeld(g_msgproc_mutex);
- bool fMoreWork = false;
-
PeerRef peer = GetPeerRef(pfrom->GetId());
if (peer == nullptr) return false;
@@ -4883,17 +4881,14 @@ bool PeerManagerImpl::ProcessMessages(CNode* pfrom, std::atomic<bool>& interrupt
// Don't bother if send buffer is too full to respond anyway
if (pfrom->fPauseSend) return false;
- std::list<CNetMessage> msgs;
- {
- LOCK(pfrom->cs_vProcessMsg);
- if (pfrom->vProcessMsg.empty()) return false;
- // Just take one message
- msgs.splice(msgs.begin(), pfrom->vProcessMsg, pfrom->vProcessMsg.begin());
- pfrom->nProcessQueueSize -= msgs.front().m_raw_message_size;
- pfrom->fPauseRecv = pfrom->nProcessQueueSize > m_connman.GetReceiveFloodSize();
- fMoreWork = !pfrom->vProcessMsg.empty();
- }
- CNetMessage& msg(msgs.front());
+ auto poll_result{pfrom->PollMessage(m_connman.GetReceiveFloodSize())};
+ if (!poll_result) {
+ // No message to process
+ return false;
+ }
+
+ CNetMessage& msg{poll_result->first};
+ bool fMoreWork = poll_result->second;
TRACE6(net, inbound_message,
pfrom->GetId(),