@@ -4854,8 +4854,6 @@ bool PeerManagerImpl::ProcessMessages(CNode* pfrom, std::atomic<bool>& interrupt
48544854{
48554855 AssertLockHeld (g_msgproc_mutex);
48564856
4857- bool fMoreWork = false ;
4858-
48594857 PeerRef peer = GetPeerRef (pfrom->GetId ());
48604858 if (peer == nullptr ) return false ;
48614859
@@ -4883,17 +4881,14 @@ bool PeerManagerImpl::ProcessMessages(CNode* pfrom, std::atomic<bool>& interrupt
48834881 // Don't bother if send buffer is too full to respond anyway
48844882 if (pfrom->fPauseSend ) return false ;
48854883
4886- std::list<CNetMessage> msgs;
4887- {
4888- LOCK (pfrom->cs_vProcessMsg );
4889- if (pfrom->vProcessMsg .empty ()) return false ;
4890- // Just take one message
4891- msgs.splice (msgs.begin (), pfrom->vProcessMsg , pfrom->vProcessMsg .begin ());
4892- pfrom->nProcessQueueSize -= msgs.front ().m_raw_message_size ;
4893- pfrom->fPauseRecv = pfrom->nProcessQueueSize > m_connman.GetReceiveFloodSize ();
4894- fMoreWork = !pfrom->vProcessMsg .empty ();
4895- }
4896- CNetMessage& msg (msgs.front ());
4884+ auto poll_result{pfrom->PollMessage (m_connman.GetReceiveFloodSize ())};
4885+ if (!poll_result) {
4886+ // No message to process
4887+ return false ;
4888+ }
4889+
4890+ CNetMessage& msg{poll_result->first };
4891+ bool fMoreWork = poll_result->second ;
48974892
48984893 TRACE6 (net, inbound_message,
48994894 pfrom->GetId (),
0 commit comments