diff options
author | Matt Corallo <git@bluematt.me> | 2018-02-08 18:00:06 -0500 |
---|---|---|
committer | Matt Corallo <git@bluematt.me> | 2018-02-08 18:06:21 -0500 |
commit | c4af7387634765d254d1432746385cf35917d367 (patch) | |
tree | 91ada887d27c8aebd0a3cf327d0cbc38a342e026 /src/net_processing.cpp | |
parent | 67447ba06057b8e83f962c82491d2fe6c5211f50 (diff) |
Fix ignoring tx data requests when fPauseSend is set on a peer
This resolves a bug introduced in
66aa1d58a158991a8014a91335b5bc9c00062f56 where, if when responding
to a series of transaction requests in a getdata we hit the send
buffer limit and set fPauseSend, we will skip one transaction per
call to ProcessGetData.
Bug found by Cory Fields (@theuni).
Diffstat (limited to 'src/net_processing.cpp')
-rw-r--r-- | src/net_processing.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp index fc0ba82d8b..bf9307727a 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1226,10 +1226,10 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam } } // release cs_main - if (it != pfrom->vRecvGetData.end()) { + if (it != pfrom->vRecvGetData.end() && !pfrom->fPauseSend) { const CInv &inv = *it; - it++; if (inv.type == MSG_BLOCK || inv.type == MSG_FILTERED_BLOCK || inv.type == MSG_CMPCT_BLOCK || inv.type == MSG_WITNESS_BLOCK) { + it++; ProcessGetBlockData(pfrom, consensusParams, inv, connman, interruptMsgProc); } } |