Disambiguate between v1 and v2 connections more clearly #675
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.
As per BEP52 - if a connection is initiated with the V1 infohash and the relevant reserved bit is set, respond with the V2 infohash to upgrade the connection to 'V2' mode. This makes it unambiguous as to whether or not a given peer supports BEP52.
More importantly, the 'ExpectedInfoHash' property is now the clear indicator as to whether a given peer supports BEP52 or not, as it will always be set to the V2 infohash if the peer supports V2 torrents.
This means peers supporting v1 only can be filtered out when requesting piecelayers from other V2 peers.