aboutsummaryrefslogtreecommitdiff
path: root/src/net_processing.cpp
diff options
context:
space:
mode:
authorJohn Newbery <john@johnnewbery.com>2020-04-28 20:28:51 -0400
committerJohn Newbery <john@johnnewbery.com>2020-04-29 19:34:01 -0400
commit9847e205bf7edcac4c30ce4b6d62f482aa7bc1b7 (patch)
treea7697064d028fb3e663ec879812b19226dfbcf62 /src/net_processing.cpp
parent2f032556e08a04807c71eb02104ca9589eaadf1b (diff)
downloadbitcoin-9847e205bf7edcac4c30ce4b6d62f482aa7bc1b7.tar.xz
[docs] Improve commenting in ProcessGetData()
Diffstat (limited to 'src/net_processing.cpp')
-rw-r--r--src/net_processing.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index 533966a07c..fbd2ccfd42 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -1604,10 +1604,14 @@ void static ProcessGetData(CNode* pfrom, const CChainParams& chainparams, CConnm
{
LOCK(cs_main);
+ // Process as many TX items from the front of the getdata queue as
+ // possible, since they're common and it's efficient to batch process
+ // them.
while (it != pfrom->vRecvGetData.end() && (it->type == MSG_TX || it->type == MSG_WITNESS_TX)) {
if (interruptMsgProc)
return;
- // Don't bother if send buffer is too full to respond anyway
+ // The send buffer provides backpressure. If there's no space in
+ // the buffer, pause processing until the next call.
if (pfrom->fPauseSend)
break;
@@ -1644,6 +1648,8 @@ void static ProcessGetData(CNode* pfrom, const CChainParams& chainparams, CConnm
}
} // release cs_main
+ // Only process one BLOCK item per call, since they're uncommon and can be
+ // expensive to process.
if (it != pfrom->vRecvGetData.end() && !pfrom->fPauseSend) {
const CInv &inv = *it++;
if (inv.type == MSG_BLOCK || inv.type == MSG_FILTERED_BLOCK || inv.type == MSG_CMPCT_BLOCK || inv.type == MSG_WITNESS_BLOCK) {