Make anti-leech choker never increase score for dishonesty #7658
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.
The current anti-leech choker takes the maximum of client-reported have and our own session uploaded size as the progress of the client. This may paradoxically inflate the score of dishonest clients if we've been uploading to it for long enough, that our uploaded size exceeds 50% of the total size. (That could in turn happen if we had nobody else to upload to for a while. That in turn screws over some honest client that then appears in our peer list, until the dishonest peer disconnects.)
This commit caps "given_size" to 50% of total_size, so that we never cause an increase of the score by taking into account the "given".