docs: update peer-id documentation to account for post-3.00 changes (#6083)

This commit is contained in:
Dan Groshev 2023-10-06 23:34:16 +01:00 committed by GitHub
parent ce39b01dd2
commit 27dad53bc5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 29 additions and 6 deletions

View File

@ -1,15 +1,38 @@
## Peer-ID
From version 0.80 onward, Transmission's peer-id is formatted in Azureus' style with one digit for the major version, two digits for the minor version and one character to denote a stable release (`0`), nightly build (`Z`) or prerelease beta (`X`). For example:
* `-TR1330-` — Official 1.33 release
* `-TR133Z-` — Nightly build between 1.33 and 1.34
* `-TR133X-` — Beta release of 1.34
Rationale: This differentiates between official and unofficial releases in a way which is easy for trackers to detect with simple string comparison. An official release (`-TR1330-`) is lexicographically smaller than its post-release unsupported versions (`-TR133Z-` and `-TR133X-`), which in turn are lexicographically smaller than the next official release (`-TR1340-`).
Transmission's peer-ids follow Azureus' style with code `TR`. Peer-id prefix is `-TR????-`, where `????` are four bytes encoding the client's version. Client version encoding changed over the client's history.
Before 0.80, versions of Transmission used two digits for the major version and two for the minor version. For example, `-TR0072-` was Transmission 0.72.
### Current scheme
Starting from version 3.00, peer-ids are formatted `-TRXYZR-` where `X`, `Y`, `Z` are [base62](https://en.wikipedia.org/wiki/Base62) major, minor, patch version numbers, and `R` is one of `0` (stable release), `B` (beta release), or `Z` (dev build). For example:
* `-TR40aZ-` — 4.0.36 Dev
* `-TR400B-` — 4.0.0 Beta
* `-TR4A00-` — 4.11.0
The suffix scheme was changed after 3.00 for consistency with other clients.
### 0.80 up to 3.00
From version 0.80 up to 3.00, Transmission's peer-ids were formatted `-TRXYYR-`, where `X` was one base10 digit for the major version and `YY` were two base10 digits for the minor version. `R` was a suffix denoting a stable release (`0`), nightly build (`Z`), or prerelease beta (`X`). For example:
* `-TR133Z-` — Nightly build between 1.33 and 1.34
* `-TR133X-` — 1.34 Beta
* `-TR1330-` — 1.33
Rationale at the time: this differentiates between official and unofficial releases in a way which is easy for trackers to detect with simple string comparison. An official release (`-TR1330-`) is lexicographically smaller than its post-release unsupported versions (`-TR133Z-` and `-TR133X-`), which in turn are lexicographically smaller than the next official release (`-TR1340-`).
### Before 0.80
Before 0.80, Transmission used two base10 digits for the major version and two base10 digits for the minor version. For example:
* `-TR0072-` — 0.72
* `-TR0006-` — 0.6
## User-Agent
Its User-Agent header follows a similar format, plus the VCS revision in parentheses:
* Transmission/1.30X (6416) — Beta release leading up to version 1.30
* Transmission/1.32 (6455) — Official 1.32 release
* Transmission/1.32+ (6499) — Nightly build between 1.32 and 1.33