Merge #8080: Do not use mempool for GETDATA for tx accepted after the last mempool req.

7e908c7 Do not use mempool for GETDATA for tx accepted after the last mempool req. (Gregory Maxwell)
This commit is contained in:
Wladimir J. van der Laan 2016-05-31 15:47:15 +02:00
commit 862fd24b40
No known key found for this signature in database
GPG key ID: 74810B012346C9A6
5 changed files with 19 additions and 2 deletions

View file

@ -4513,7 +4513,10 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
}
if (!pushed && inv.type == MSG_TX) {
CTransaction tx;
if (mempool.lookup(inv.hash, tx)) {
int64_t txtime;
// To protect privacy, do not answer getdata using the mempool when
// that TX couldn't have been INVed in reply to a MEMPOOL request.
if (mempool.lookup(inv.hash, tx, txtime) && txtime <= pfrom->timeLastMempoolReq) {
pfrom->PushMessage(NetMsgType::TX, tx);
pushed = true;
}
@ -5911,6 +5914,7 @@ bool SendMessages(CNode* pto)
vInv.clear();
}
}
pto->timeLastMempoolReq = GetTime();
}
// Determine transactions to relay