Only use AddInventoryKnown for transactions
filterInventoryKnown is only used when relaying transactions, so stop adding block hashes to the filter.
This commit is contained in:
parent
e26b62093a
commit
383fc10ebb
1 changed files with 4 additions and 9 deletions
13
src/main.cpp
13
src/main.cpp
|
@ -4765,7 +4765,6 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||||
const CInv &inv = vInv[nInv];
|
const CInv &inv = vInv[nInv];
|
||||||
|
|
||||||
boost::this_thread::interruption_point();
|
boost::this_thread::interruption_point();
|
||||||
pfrom->AddInventoryKnown(inv);
|
|
||||||
|
|
||||||
bool fAlreadyHave = AlreadyHave(inv);
|
bool fAlreadyHave = AlreadyHave(inv);
|
||||||
LogPrint("net", "got inv: %s %s peer=%d\n", inv.ToString(), fAlreadyHave ? "have" : "new", pfrom->id);
|
LogPrint("net", "got inv: %s %s peer=%d\n", inv.ToString(), fAlreadyHave ? "have" : "new", pfrom->id);
|
||||||
|
@ -4795,6 +4794,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
pfrom->AddInventoryKnown(inv);
|
||||||
if (fBlocksOnly)
|
if (fBlocksOnly)
|
||||||
LogPrint("net", "transaction (%s) inv sent in violation of protocol peer=%d\n", inv.hash.ToString(), pfrom->id);
|
LogPrint("net", "transaction (%s) inv sent in violation of protocol peer=%d\n", inv.hash.ToString(), pfrom->id);
|
||||||
else if (!fAlreadyHave && !fImporting && !fReindex && !IsInitialBlockDownload())
|
else if (!fAlreadyHave && !fImporting && !fReindex && !IsInitialBlockDownload())
|
||||||
|
@ -5173,10 +5173,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||||
CBlock block;
|
CBlock block;
|
||||||
vRecv >> block;
|
vRecv >> block;
|
||||||
|
|
||||||
CInv inv(MSG_BLOCK, block.GetHash());
|
LogPrint("net", "received block %s peer=%d\n", block.GetHash().ToString(), pfrom->id);
|
||||||
LogPrint("net", "received block %s peer=%d\n", inv.hash.ToString(), pfrom->id);
|
|
||||||
|
|
||||||
pfrom->AddInventoryKnown(inv);
|
|
||||||
|
|
||||||
CValidationState state;
|
CValidationState state;
|
||||||
// Process all blocks from whitelisted peers, even if not requested,
|
// Process all blocks from whitelisted peers, even if not requested,
|
||||||
|
@ -5189,7 +5186,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||||
if (state.IsInvalid(nDoS)) {
|
if (state.IsInvalid(nDoS)) {
|
||||||
assert (state.GetRejectCode() < REJECT_INTERNAL); // Blocks are never rejected with internal reject codes
|
assert (state.GetRejectCode() < REJECT_INTERNAL); // Blocks are never rejected with internal reject codes
|
||||||
pfrom->PushMessage(NetMsgType::REJECT, strCommand, (unsigned char)state.GetRejectCode(),
|
pfrom->PushMessage(NetMsgType::REJECT, strCommand, (unsigned char)state.GetRejectCode(),
|
||||||
state.GetRejectReason().substr(0, MAX_REJECT_MESSAGE_LENGTH), inv.hash);
|
state.GetRejectReason().substr(0, MAX_REJECT_MESSAGE_LENGTH), block.GetHash());
|
||||||
if (nDoS > 0) {
|
if (nDoS > 0) {
|
||||||
LOCK(cs_main);
|
LOCK(cs_main);
|
||||||
Misbehaving(pfrom->GetId(), nDoS);
|
Misbehaving(pfrom->GetId(), nDoS);
|
||||||
|
@ -5769,9 +5766,7 @@ bool SendMessages(CNode* pto)
|
||||||
hashToAnnounce.ToString(), chainActive.Tip()->GetBlockHash().ToString());
|
hashToAnnounce.ToString(), chainActive.Tip()->GetBlockHash().ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the peer announced this block to us, don't inv it back.
|
// If the peer's chain has this block, don't inv it back.
|
||||||
// (Since block announcements may not be via inv's, we can't solely rely on
|
|
||||||
// setInventoryKnown to track this.)
|
|
||||||
if (!PeerHasHeader(&state, pindex)) {
|
if (!PeerHasHeader(&state, pindex)) {
|
||||||
pto->PushInventory(CInv(MSG_BLOCK, hashToAnnounce));
|
pto->PushInventory(CInv(MSG_BLOCK, hashToAnnounce));
|
||||||
LogPrint("net", "%s: sending inv peer=%d hash=%s\n", __func__,
|
LogPrint("net", "%s: sending inv peer=%d hash=%s\n", __func__,
|
||||||
|
|
Loading…
Reference in a new issue