mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 20:12:57 +01:00
Avoid leaking the prune height through getdata (fingerprinting countermeasure)
This commit is contained in:
parent
27df193efd
commit
bd09416524
@ -1091,6 +1091,16 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
|
|||||||
pfrom->fDisconnect = true;
|
pfrom->fDisconnect = true;
|
||||||
send = false;
|
send = false;
|
||||||
}
|
}
|
||||||
|
// Avoid leaking prune-height by never sending blocks below the NODE_NETWORK_LIMITED threshold
|
||||||
|
if (send && !pfrom->fWhitelisted && (
|
||||||
|
(((pfrom->GetLocalServices() & NODE_NETWORK_LIMITED) == NODE_NETWORK_LIMITED) && ((pfrom->GetLocalServices() & NODE_NETWORK) != NODE_NETWORK) && (chainActive.Tip()->nHeight - mi->second->nHeight > (int)NODE_NETWORK_LIMITED_MIN_BLOCKS + 2 /* add two blocks buffer extension for possible races */) )
|
||||||
|
)) {
|
||||||
|
LogPrint(BCLog::NET, "Ignore block request below NODE_NETWORK_LIMITED threshold from peer=%d\n", pfrom->GetId());
|
||||||
|
|
||||||
|
//disconnect node and prevent it from stalling (would otherwise wait for the missing block)
|
||||||
|
pfrom->fDisconnect = true;
|
||||||
|
send = false;
|
||||||
|
}
|
||||||
// Pruned nodes may have deleted the block, so check whether
|
// Pruned nodes may have deleted the block, so check whether
|
||||||
// it's available before trying to send.
|
// it's available before trying to send.
|
||||||
if (send && (mi->second->nStatus & BLOCK_HAVE_DATA))
|
if (send && (mi->second->nStatus & BLOCK_HAVE_DATA))
|
||||||
|
Loading…
Reference in New Issue
Block a user