[doc] Clarify semantic of peer's m_protect w.r.t to outbound eviction logics

The field m_protect is used to protect from eviction both by bad/lagging
chain and extra outbound peers logics. Outbound block-relay peers are
always excluded from this protection.
pull/764/head
Antoine Riard 4 years ago
parent ac71fe936d
commit d76925478e

@ -321,10 +321,17 @@ struct CNodeState {
*/ */
bool fSupportsDesiredCmpctVersion; bool fSupportsDesiredCmpctVersion;
/** State used to enforce CHAIN_SYNC_TIMEOUT /** State used to enforce CHAIN_SYNC_TIMEOUT and EXTRA_PEER_CHECK_INTERVAL logic.
* Only in effect for outbound, non-manual, full-relay connections, with *
* m_protect == false * Both are only in effect for outbound, non-manual, non-protected connections.
* Algorithm: if a peer's best known block has less work than our tip, * Any peer protected (m_protect = true) is not chosen for eviction. A peer is
* marked as protected if all of these are true:
* - its connection type is IsBlockOnlyConn() == false
* - it gave us a valid connecting header
* - we haven't reached MAX_OUTBOUND_PEERS_TO_PROTECT_FROM_DISCONNECT yet
* - it has a better chain than we have
*
* CHAIN_SYNC_TIMEOUT: if a peer's best known block has less work than our tip,
* set a timeout CHAIN_SYNC_TIMEOUT seconds in the future: * set a timeout CHAIN_SYNC_TIMEOUT seconds in the future:
* - If at timeout their best known block now has more work than our tip * - If at timeout their best known block now has more work than our tip
* when the timeout was set, then either reset the timeout or clear it * when the timeout was set, then either reset the timeout or clear it
@ -334,6 +341,9 @@ struct CNodeState {
* and set a shorter timeout, HEADERS_RESPONSE_TIME seconds in future. * and set a shorter timeout, HEADERS_RESPONSE_TIME seconds in future.
* If their best known block is still behind when that new timeout is * If their best known block is still behind when that new timeout is
* reached, disconnect. * reached, disconnect.
*
* EXTRA_PEER_CHECK_INTERVAL: after each interval, if we have too many outbound peers,
* drop the outbound one that least recently announced us a new block.
*/ */
struct ChainSyncTimeoutState { struct ChainSyncTimeoutState {
//! A timeout used for checking whether our peer has sufficiently synced //! A timeout used for checking whether our peer has sufficiently synced

Loading…
Cancel
Save