@@ -1328,18 +1328,7 @@ void CConnman::SocketHandlerConnected(const std::vector<CNode*>& nodes,
13281328 }
13291329 RecordBytesRecv (nBytes);
13301330 if (notify) {
1331- size_t nSizeAdded = 0 ;
1332- for (const auto & msg : pnode->vRecvMsg ) {
1333- // vRecvMsg contains only completed CNetMessage
1334- // the single possible partially deserialized message are held by TransportDeserializer
1335- nSizeAdded += msg.m_raw_message_size ;
1336- }
1337- {
1338- LOCK (pnode->cs_vProcessMsg );
1339- pnode->vProcessMsg .splice (pnode->vProcessMsg .end (), pnode->vRecvMsg );
1340- pnode->nProcessQueueSize += nSizeAdded;
1341- pnode->fPauseRecv = pnode->nProcessQueueSize > nReceiveFloodSize;
1342- }
1331+ pnode->MarkReceivedMsgsForProcessing (nReceiveFloodSize);
13431332 WakeMessageHandler ();
13441333 }
13451334 }
@@ -2806,6 +2795,23 @@ CNode::CNode(NodeId idIn,
28062795 }
28072796}
28082797
2798+ void CNode::MarkReceivedMsgsForProcessing (unsigned int recv_flood_size)
2799+ {
2800+ AssertLockNotHeld (cs_vProcessMsg);
2801+
2802+ size_t nSizeAdded = 0 ;
2803+ for (const auto & msg : vRecvMsg) {
2804+ // vRecvMsg contains only completed CNetMessage
2805+ // the single possible partially deserialized message are held by TransportDeserializer
2806+ nSizeAdded += msg.m_raw_message_size ;
2807+ }
2808+
2809+ LOCK (cs_vProcessMsg);
2810+ vProcessMsg.splice (vProcessMsg.end (), vRecvMsg);
2811+ nProcessQueueSize += nSizeAdded;
2812+ fPauseRecv = nProcessQueueSize > recv_flood_size;
2813+ }
2814+
28092815bool CConnman::NodeFullyConnected (const CNode* pnode)
28102816{
28112817 return pnode && pnode->fSuccessfullyConnected && !pnode->fDisconnect ;
0 commit comments