aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2016-05-31 15:47:15 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2016-05-31 15:47:32 +0200
commit862fd24b40b478f815dcb5df4f705cae2c0a1cf9 (patch)
treee76f4407498a0df5a8b017b9a3102f92de074c0a /src/main.cpp
parenta2df115249386d277a90d7aeac20b629369e4d32 (diff)
parent7e908c7b826cedbf29560ce7a668af809ee71524 (diff)
downloadbitcoin-862fd24b40b478f815dcb5df4f705cae2c0a1cf9.tar.xz
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)
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp
index ffc57d48be..c2905784f0 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -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