Fix ignoring tx data requests when fPauseSend is set on a peer
This resolves a bug introduced in
66aa1d58a1
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).
This commit is contained in:
parent
67447ba060
commit
c4af738763
1 changed files with 2 additions and 2 deletions
|
@ -1226,10 +1226,10 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
|
||||||
}
|
}
|
||||||
} // release cs_main
|
} // release cs_main
|
||||||
|
|
||||||
if (it != pfrom->vRecvGetData.end()) {
|
if (it != pfrom->vRecvGetData.end() && !pfrom->fPauseSend) {
|
||||||
const CInv &inv = *it;
|
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) {
|
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);
|
ProcessGetBlockData(pfrom, consensusParams, inv, connman, interruptMsgProc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue