Changeset View
Changeset View
Standalone View
Standalone View
src/net_processing.cpp
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 5,012 Lines • ▼ Show 20 Lines | if (msg_type == NetMsgType::AVARESPONSE) { | ||||
pfrom.m_avalanche_state->invsVoted(response.GetVotes().size()); | pfrom.m_avalanche_state->invsVoted(response.GetVotes().size()); | ||||
for (avalanche::ProofUpdate &u : proofUpdates) { | for (avalanche::ProofUpdate &u : proofUpdates) { | ||||
avalanche::ProofRef proof = u.getVoteItem(); | avalanche::ProofRef proof = u.getVoteItem(); | ||||
const avalanche::ProofId &proofid = proof->getId(); | const avalanche::ProofId &proofid = proof->getId(); | ||||
auto rejectionMode = avalanche::PeerManager::RejectionMode::DEFAULT; | auto rejectionMode = avalanche::PeerManager::RejectionMode::DEFAULT; | ||||
auto nextCooldownTimePoint = GetTime<std::chrono::seconds>(); | |||||
switch (u.getStatus()) { | switch (u.getStatus()) { | ||||
case avalanche::VoteStatus::Invalid: | case avalanche::VoteStatus::Invalid: | ||||
rejectionMode = | rejectionMode = | ||||
avalanche::PeerManager::RejectionMode::INVALIDATE; | avalanche::PeerManager::RejectionMode::INVALIDATE; | ||||
WITH_LOCK(cs_rejectedProofs, | WITH_LOCK(cs_rejectedProofs, | ||||
rejectedProofs->insert(proofid)); | rejectedProofs->insert(proofid)); | ||||
case avalanche::VoteStatus::Rejected: | case avalanche::VoteStatus::Rejected: | ||||
LogPrint(BCLog::AVALANCHE, | LogPrint(BCLog::AVALANCHE, | ||||
"Avalanche rejected proof %s, status %d\n", | "Avalanche rejected proof %s, status %d\n", | ||||
proofid.GetHex(), uint8_t(u.getStatus())); | proofid.GetHex(), uint8_t(u.getStatus())); | ||||
if (g_avalanche->withPeerManager( | if (g_avalanche->withPeerManager( | ||||
[&](avalanche::PeerManager &pm) { | [&](avalanche::PeerManager &pm) { | ||||
pm.rejectProof(proofid, rejectionMode); | pm.rejectProof(proofid, rejectionMode); | ||||
return pm.exists(proofid); | return pm.exists(proofid); | ||||
})) { | })) { | ||||
LogPrint(BCLog::AVALANCHE, | LogPrint(BCLog::AVALANCHE, | ||||
"ERROR: Failed to reject proof: %s\n", | "ERROR: Failed to reject proof: %s\n", | ||||
proofid.GetHex()); | proofid.GetHex()); | ||||
} | } | ||||
break; | break; | ||||
case avalanche::VoteStatus::Accepted: | |||||
case avalanche::VoteStatus::Finalized: | case avalanche::VoteStatus::Finalized: | ||||
nextCooldownTimePoint += std::chrono::seconds(gArgs.GetArg( | |||||
"-avalanchepeerreplacementcooldown", | |||||
AVALANCHE_DEFAULT_PEER_REPLACEMENT_COOLDOWN)); | |||||
case avalanche::VoteStatus::Accepted: | |||||
LogPrint(BCLog::AVALANCHE, | LogPrint(BCLog::AVALANCHE, | ||||
"Avalanche accepted proof %s, status %d\n", | "Avalanche accepted proof %s, status %d\n", | ||||
proofid.GetHex(), uint8_t(u.getStatus())); | proofid.GetHex(), uint8_t(u.getStatus())); | ||||
if (!g_avalanche->withPeerManager( | if (!g_avalanche->withPeerManager( | ||||
[&](avalanche::PeerManager &pm) { | [&](avalanche::PeerManager &pm) { | ||||
pm.registerProof( | pm.registerProof( | ||||
proof, avalanche::PeerManager:: | proof, avalanche::PeerManager:: | ||||
RegistrationMode::FORCE_ACCEPT); | RegistrationMode::FORCE_ACCEPT); | ||||
return pm.isBoundToPeer(proofid); | return pm.forPeer( | ||||
proofid, [&](const avalanche::Peer &peer) { | |||||
pm.updateNextPossibleConflictTime( | |||||
peer.peerid, nextCooldownTimePoint); | |||||
// Only fail if the peer was not | |||||
// created | |||||
return true; | |||||
}); | |||||
})) { | })) { | ||||
LogPrint(BCLog::AVALANCHE, | LogPrint(BCLog::AVALANCHE, | ||||
"ERROR: Failed to accept proof: %s\n", | "ERROR: Failed to accept proof: %s\n", | ||||
proofid.GetHex()); | proofid.GetHex()); | ||||
} | } | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,791 Lines • Show Last 20 Lines |