diff options
| author | Cory Fields <[email protected]> | 2016-12-31 02:05:30 -0500 |
|---|---|---|
| committer | Cory Fields <[email protected]> | 2017-01-12 23:05:47 -0500 |
| commit | c6e8a9bcffe4c0f236e27c663f08785d1a0a783b (patch) | |
| tree | b622192961f036991f6de2ceea0d483931a78eca /src/net_processing.cpp | |
| parent | net: add a new message queue for the message processor (diff) | |
| download | discoin-c6e8a9bcffe4c0f236e27c663f08785d1a0a783b.tar.xz discoin-c6e8a9bcffe4c0f236e27c663f08785d1a0a783b.zip | |
net: add a flag to indicate when a node's process queue is full
Messages are dumped very quickly from the socket handler to the processor, so
it's the depth of the processing queue that's interesting.
The socket handler checks the process queue's size during the brief message
hand-off and pauses if necessary, and the processor possibly unpauses each time
a message is popped off of its queue.
Diffstat (limited to 'src/net_processing.cpp')
| -rw-r--r-- | src/net_processing.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 9963a872e..93b6e2ec0 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -2475,6 +2475,8 @@ bool ProcessMessages(CNode* pfrom, CConnman& connman, std::atomic<bool>& interru return false; // Just take one message msgs.splice(msgs.begin(), pfrom->vProcessMsg, pfrom->vProcessMsg.begin()); + pfrom->nProcessQueueSize -= msgs.front().vRecv.size() + CMessageHeader::HEADER_SIZE; + pfrom->fPauseRecv = pfrom->nProcessQueueSize > connman.GetReceiveFloodSize(); fMoreWork = !pfrom->vProcessMsg.empty(); } CNetMessage& msg(msgs.front()); |