mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-20 13:53:15 +02:00
[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.
This commit is contained in:
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…
x
Reference in New Issue
Block a user