diff options
| author | Matt Corallo <[email protected]> | 2018-02-08 18:00:06 -0500 |
|---|---|---|
| committer | Matt Corallo <[email protected]> | 2018-02-08 18:06:21 -0500 |
| commit | c4af7387634765d254d1432746385cf35917d367 (patch) | |
| tree | 91ada887d27c8aebd0a3cf327d0cbc38a342e026 /src/net_processing.cpp | |
| parent | Merge #12225: Mempool cleanups (diff) | |
| download | discoin-c4af7387634765d254d1432746385cf35917d367.tar.xz discoin-c4af7387634765d254d1432746385cf35917d367.zip | |
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 fc0ba82d8..bf9307727 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); } } |