HomePhabricator

[backport] net: Allow connections from misbehavior banned peers

Description

[backport] net: Allow connections from misbehavior banned peers

Summary:
0297be61a Allow connections from misbehavior banned peers. (Gregory Maxwell)


Pull request description:

This allows incoming connections from peers which are only banned
due to an automatic misbehavior ban if doing so won't fill inbound.

These peers are preferred for eviction when inbound fills, but may
still be kept if they fall into the protected classes. This
eviction preference lasts the entire life of the connection even
if the ban expires.

If they misbehave again they'll still get disconnected.

The main purpose of banning on misbehavior is to prevent our
connections from being wasted on unhelpful peers such as ones
running incompatible consensus rules. For inbound peers this
can be better accomplished with eviction preferences.

A secondary purpose was to reduce resource waste from repeated
abuse but virtually any attacker can get a nearly unlimited
supply of addresses, so disconnection is about the best we can
do.

This can reduce the potential from negative impact due to incorrect misbehaviour bans.


This is a backport from Core PR14929 (https://github.com/bitcoin/bitcoin/pull/14929)

Test Plan:

ninja check
cmake --build . --config Release --target check-functional -- -j 6

Reviewers: O1 Bitcoin ABC, #bitcoin_abc, deadalnix, nakihito

Reviewed By: O1 Bitcoin ABC, #bitcoin_abc, deadalnix, nakihito

Subscribers: nakihito

Differential Revision: https://reviews.bitcoinabc.org/D4759

Details

Provenance
Jonas Schnelli <dev@jonasschnelli.ch>Authored on Jan 29 2019, 23:40
majcostaCommitted on Dec 19 2019, 21:58
majcostaPushed on Dec 19 2019, 21:59
Reviewer
Restricted Owners Package
Differential Revision
D4759: [backport] net: Allow connections from misbehavior banned peers
Parents
rABC89caff594aac: [CI] Don't override the default Junit file name
Branches
Unknown
Tags
Unknown