fix(dht/test): ban peers who send empty encrypted messages #5130
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Bans peers who send empty encrypted messages. Significantly updates tests to check for more failure modes and assert ban status for each.
Closes issue 5132.
Motivation and Context
An earlier PR introduces an error when a peer sends an empty encrypted message, which is not allowed. However, the peer was not banned.
Further, another PR updates the handling of unsigned encrypted messages to ensure that bans are done correctly, but does not update tests to check for the bug that led to it.
This PR updates the banning logic to ban a peer who forwards an empty encrypted message, which is always detectable.
It also significantly refactors and updates tests. For each relevant high-level message failure mode, we test for proper error detection. We also check for the proper ban status of the forwarding peer.
How Has This Been Tested?
Who tests the testers?