mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-19 05:45:05 +01:00
scripted-diff: Rename nUnconnectingHeaders and fPreferHeaders
-BEGIN VERIFY SCRIPT- ren() { sed -i "s:\<$1\>:$2:g" $(git grep -l "\<$1\>" ./src ./test); } ren nUnconnectingHeaders m_num_unconnecting_headers_msgs ren fPreferHeaders m_prefers_headers ren MAX_UNCONNECTING_HEADERS MAX_NUM_UNCONNECTING_HEADERS_MSGS -END VERIFY SCRIPT-
This commit is contained in:
parent
279c53d7e4
commit
3a060ae7b6
@ -135,7 +135,7 @@ static constexpr double BLOCK_DOWNLOAD_TIMEOUT_PER_PEER = 0.5;
|
||||
/** Maximum number of headers to announce when relaying blocks with headers message.*/
|
||||
static const unsigned int MAX_BLOCKS_TO_ANNOUNCE = 8;
|
||||
/** Maximum number of unconnecting headers announcements before DoS score */
|
||||
static const int MAX_UNCONNECTING_HEADERS = 10;
|
||||
static const int MAX_NUM_UNCONNECTING_HEADERS_MSGS = 10;
|
||||
/** Minimum blocks required to signal NODE_NETWORK_LIMITED */
|
||||
static const unsigned int NODE_NETWORK_LIMITED_MIN_BLOCKS = 288;
|
||||
/** Average delay between local address broadcasts */
|
||||
@ -393,13 +393,13 @@ struct Peer {
|
||||
std::atomic<bool> m_sent_sendheaders{false};
|
||||
|
||||
/** Length of current-streak of unconnecting headers announcements */
|
||||
int nUnconnectingHeaders GUARDED_BY(NetEventsInterface::g_msgproc_mutex){0};
|
||||
int m_num_unconnecting_headers_msgs GUARDED_BY(NetEventsInterface::g_msgproc_mutex){0};
|
||||
|
||||
/** When to potentially disconnect peer for stalling headers download */
|
||||
std::chrono::microseconds m_headers_sync_timeout GUARDED_BY(NetEventsInterface::g_msgproc_mutex){0us};
|
||||
|
||||
/** Whether this peer wants invs or headers (when possible) for block announcements */
|
||||
bool fPreferHeaders GUARDED_BY(NetEventsInterface::g_msgproc_mutex){false};
|
||||
bool m_prefers_headers GUARDED_BY(NetEventsInterface::g_msgproc_mutex){false};
|
||||
|
||||
explicit Peer(NodeId id, ServiceFlags our_services)
|
||||
: m_id{id}
|
||||
@ -2439,24 +2439,24 @@ arith_uint256 PeerManagerImpl::GetAntiDoSWorkThreshold()
|
||||
*
|
||||
* We'll send a getheaders message in response to try to connect the chain.
|
||||
*
|
||||
* The peer can send up to MAX_UNCONNECTING_HEADERS in a row that
|
||||
* The peer can send up to MAX_NUM_UNCONNECTING_HEADERS_MSGS in a row that
|
||||
* don't connect before given DoS points.
|
||||
*
|
||||
* Once a headers message is received that is valid and does connect,
|
||||
* nUnconnectingHeaders gets reset back to 0.
|
||||
* m_num_unconnecting_headers_msgs gets reset back to 0.
|
||||
*/
|
||||
void PeerManagerImpl::HandleFewUnconnectingHeaders(CNode& pfrom, Peer& peer,
|
||||
const std::vector<CBlockHeader>& headers)
|
||||
{
|
||||
peer.nUnconnectingHeaders++;
|
||||
peer.m_num_unconnecting_headers_msgs++;
|
||||
// Try to fill in the missing headers.
|
||||
const CBlockIndex* best_header{WITH_LOCK(cs_main, return m_chainman.m_best_header)};
|
||||
if (MaybeSendGetHeaders(pfrom, GetLocator(best_header), peer)) {
|
||||
LogPrint(BCLog::NET, "received header %s: missing prev block %s, sending getheaders (%d) to end (peer=%d, nUnconnectingHeaders=%d)\n",
|
||||
LogPrint(BCLog::NET, "received header %s: missing prev block %s, sending getheaders (%d) to end (peer=%d, m_num_unconnecting_headers_msgs=%d)\n",
|
||||
headers[0].GetHash().ToString(),
|
||||
headers[0].hashPrevBlock.ToString(),
|
||||
best_header->nHeight,
|
||||
pfrom.GetId(), peer.nUnconnectingHeaders);
|
||||
pfrom.GetId(), peer.m_num_unconnecting_headers_msgs);
|
||||
}
|
||||
|
||||
// Set hashLastUnknownBlock for this peer, so that if we
|
||||
@ -2466,8 +2466,8 @@ void PeerManagerImpl::HandleFewUnconnectingHeaders(CNode& pfrom, Peer& peer,
|
||||
|
||||
// The peer may just be broken, so periodically assign DoS points if this
|
||||
// condition persists.
|
||||
if (peer.nUnconnectingHeaders % MAX_UNCONNECTING_HEADERS == 0) {
|
||||
Misbehaving(peer, 20, strprintf("%d non-connecting headers", peer.nUnconnectingHeaders));
|
||||
if (peer.m_num_unconnecting_headers_msgs % MAX_NUM_UNCONNECTING_HEADERS_MSGS == 0) {
|
||||
Misbehaving(peer, 20, strprintf("%d non-connecting headers", peer.m_num_unconnecting_headers_msgs));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2718,10 +2718,10 @@ void PeerManagerImpl::HeadersDirectFetchBlocks(CNode& pfrom, const Peer& peer, c
|
||||
void PeerManagerImpl::UpdatePeerStateForReceivedHeaders(CNode& pfrom, Peer& peer,
|
||||
const CBlockIndex& last_header, bool received_new_header, bool may_have_more_headers)
|
||||
{
|
||||
if (peer.nUnconnectingHeaders > 0) {
|
||||
LogPrint(BCLog::NET, "peer=%d: resetting nUnconnectingHeaders (%d -> 0)\n", pfrom.GetId(), peer.nUnconnectingHeaders);
|
||||
if (peer.m_num_unconnecting_headers_msgs > 0) {
|
||||
LogPrint(BCLog::NET, "peer=%d: resetting m_num_unconnecting_headers_msgs (%d -> 0)\n", pfrom.GetId(), peer.m_num_unconnecting_headers_msgs);
|
||||
}
|
||||
peer.nUnconnectingHeaders = 0;
|
||||
peer.m_num_unconnecting_headers_msgs = 0;
|
||||
|
||||
LOCK(cs_main);
|
||||
CNodeState *nodestate = State(pfrom.GetId());
|
||||
@ -3453,7 +3453,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
|
||||
}
|
||||
|
||||
if (msg_type == NetMsgType::SENDHEADERS) {
|
||||
peer->fPreferHeaders = true;
|
||||
peer->m_prefers_headers = true;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -5459,7 +5459,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
|
||||
// add all to the inv queue.
|
||||
LOCK(peer->m_block_inv_mutex);
|
||||
std::vector<CBlock> vHeaders;
|
||||
bool fRevertToInv = ((!peer->fPreferHeaders &&
|
||||
bool fRevertToInv = ((!peer->m_prefers_headers &&
|
||||
(!state.m_requested_hb_cmpctblocks || peer->m_blocks_for_headers_relay.size() > 1)) ||
|
||||
peer->m_blocks_for_headers_relay.size() > MAX_BLOCKS_TO_ANNOUNCE);
|
||||
const CBlockIndex *pBestIndex = nullptr; // last header queued for delivery
|
||||
@ -5536,7 +5536,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
|
||||
m_connman.PushMessage(pto, msgMaker.Make(NetMsgType::CMPCTBLOCK, cmpctblock));
|
||||
}
|
||||
state.pindexBestHeaderSent = pBestIndex;
|
||||
} else if (peer->fPreferHeaders) {
|
||||
} else if (peer->m_prefers_headers) {
|
||||
if (vHeaders.size() > 1) {
|
||||
LogPrint(BCLog::NET, "%s: %u headers, range (%s, %s), to peer=%d\n", __func__,
|
||||
vHeaders.size(),
|
||||
|
@ -546,15 +546,15 @@ class SendHeadersTest(BitcoinTestFramework):
|
||||
blocks = []
|
||||
# Now we test that if we repeatedly don't send connecting headers, we
|
||||
# don't go into an infinite loop trying to get them to connect.
|
||||
MAX_UNCONNECTING_HEADERS = 10
|
||||
for _ in range(MAX_UNCONNECTING_HEADERS + 1):
|
||||
MAX_NUM_UNCONNECTING_HEADERS_MSGS = 10
|
||||
for _ in range(MAX_NUM_UNCONNECTING_HEADERS_MSGS + 1):
|
||||
blocks.append(create_block(tip, create_coinbase(height), block_time))
|
||||
blocks[-1].solve()
|
||||
tip = blocks[-1].sha256
|
||||
block_time += 1
|
||||
height += 1
|
||||
|
||||
for i in range(1, MAX_UNCONNECTING_HEADERS):
|
||||
for i in range(1, MAX_NUM_UNCONNECTING_HEADERS_MSGS):
|
||||
# Send a header that doesn't connect, check that we get a getheaders.
|
||||
with p2p_lock:
|
||||
test_node.last_message.pop("getheaders", None)
|
||||
@ -568,8 +568,8 @@ class SendHeadersTest(BitcoinTestFramework):
|
||||
blocks = blocks[2:]
|
||||
|
||||
# Now try to see how many unconnecting headers we can send
|
||||
# before we get disconnected. Should be 5*MAX_UNCONNECTING_HEADERS
|
||||
for i in range(5 * MAX_UNCONNECTING_HEADERS - 1):
|
||||
# before we get disconnected. Should be 5*MAX_NUM_UNCONNECTING_HEADERS_MSGS
|
||||
for i in range(5 * MAX_NUM_UNCONNECTING_HEADERS_MSGS - 1):
|
||||
# Send a header that doesn't connect, check that we get a getheaders.
|
||||
with p2p_lock:
|
||||
test_node.last_message.pop("getheaders", None)
|
||||
|
Loading…
Reference in New Issue
Block a user