The motivation for this PR is to reduce the scope of cs_main locking in misbehavior logic. It is the first set of commits from a larger branch to move the misbehavior data out of CNodeState and into a new struct that doesn't take cs_main. There are some very minor behavior changes in this branch, such as: Not checking for discouragement/disconnect in ProcessMessages() (and instead relying on the following check in SendMessages()) Checking for discouragement/disconnect as the first action in SendMessages() (and not doing ping message sending first) Continuing through SendMessages() if MaybeDiscourageAndDisconnect() doesn't disconnect the peer (rather than dropping out of SendMessages()
Backport of core PR19472.