Juliusz Chroboczek (DHT, network code, BitTorrent code improvements)
Daniel Lee (Patches)
Tomas Carnecky (Profiling, patches, and detection of sneaky bugs)
- Diego Jiménez (Patches)
+ Diego Jiménez (Patches)
Kendall Hopkins <SoftwareElves@gmail.com> (Web client)
Malcolm Jarvis <mjarvis@transmissionbt.com> (Web client)
Kevin Glowacz <kjg@transmissionbt.com> (Web client)
Guilherme Fernandes (Brazilian Portuguese)
Sven-S. Porst (German)
Tianhao He (Simplified Chinese)
- Sérgio Miranda (European Portuguese)
- Daniel ¯stergaard Nielsen (Danish)
+ Sérgio Miranda (European Portuguese)
+ Daniel Østergaard Nielsen (Danish)
Emir SARI (Turkish)
GTK+ Translators:
=== Transmission 2.70 (2012/09/25) ===
[https://trac.transmissionbt.com/query?milestone=2.70&group=component&order=severity All tickets closed by this release]
==== All Platforms ====
- * Improved speed with the µTP protocol
+ * Improved speed with the µTP protocol
* Fix bug that caused some incoming encrypted peer connections to fail
* Fix bugs with the speed limit scheduler
* Fix crasher with magnet links
* Fix error caused by some "open-file-limit" configuration settings
* Fix 2.30 problem seeding to some peers
* Fix bug converting torrent file text contents to UTF-8
- * Better µTP support on systems running uClibc
+ * Better µTP support on systems running uClibc
* Other small bug fixes
==== Mac ====
* Improved tabbing behavior
=== Transmission 2.30 (2011/05/16) ===
[https://trac.transmissionbt.com/query?milestone=2.30&group=component&order=severity All tickets closed by this release]
==== All Platforms ====
- * µTP support
+ * µTP support
* UDP tracker support
* Multiscrape support
* Download scarcest pieces first
Prime P is a 768 bit safe prime, "0xFFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A63A36210000000000090563"
Generator G is "2"
-Xa and Xb are a variable size random integers.
+Xa and Xb are a variable size random integers.
They are the private key for each side and have to be discarded after
the DH handshake is done. Minimum length is 128 bit. Anything beyond 180 bit
is not believed to add any further security and only increases the necessary
The first 1024 bytes of the RC4 output are discarded.
consecutive calls to ENCRYPT() by one side continue the encryption
stream (no reinitialization, no keychange). They are only used to distinguish
-semantically seperate content.
+semantically seperate content.
ENCRYPT2() is the negotiated crypto method.
2 (termination by B)
if A sent less than 96 Bytes within 30 seconds
-if A sent more than 608 bytes
+if A sent more than 608 bytes
3 (termination by A)
if B sent less than 96 Bytes within 30 seconds
added.f
string, one byte of flags for each peer in the above added string.
according to libtorrent's ut_pex.c:
-
+
1: encryption
2: seed/upload_only
4: uTP support
The command-line utility "transmission-remote" uses this RPC API.
Several developers have reported using its --debug JSON output as
a reference when developing/debugging their own code.
-
+
2. Message Format
Messages are formatted as objects. There are two types:
in libtransmission/transmission.h. The "source" column here
corresponds to the data structure there.
- key | type | source
+ key | type | source
----------------------------+-----------------------------+---------
activityDate | number | tr_stat
addedDate | number | tr_stat
Say we want to get the name and total size of torrents #7 and #10.
- Request:
+ Request:
{
"arguments": {
{
"arguments": {
- "torrents": [
- {
+ "torrents": [
+ {
"id": 10,
"name": "Fedora x86_64 DVD",
"totalSize": 34983493932,
"id": 7,
"name": "Ubuntu x86_64 DVD",
"totalSize", 9923890123,
- }
+ }
]
},
"result": "success",
"metainfo" | string base64-encoded .torrent content
"paused" | boolean if true, don't start the torrent
"peer-limit" | number maximum number of peers
- "bandwidthPriority" | number torrent's bandwidth tr_priority_t
+ "bandwidthPriority" | number torrent's bandwidth tr_priority_t
"files-wanted" | array indices of file(s) to download
"files-unwanted" | array indices of file(s) to not download
"priority-high" | array indices of high-priority file(s)
The format of the "cookies" should be NAME=CONTENTS, where NAME is the
cookie name and CONTENTS is what the cookie should contain.
- Set multiple cookies like this: "name1=content1; name2=content2;" etc.
+ Set multiple cookies like this: "name1=content1; name2=content2;" etc.
<http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTCOOKIE>
Response arguments: On success, a "torrent-added" object in the
| | | |
| | yes | torrent-set | new arg "bandwidthPriority"
| | yes | torrent-set | new arg "honorsSessionLimits"
- | | yes | torrent-set | new arg "seedRatioLimit"
- | | yes | torrent-set | new arg "seedRatioLimited"
- | | NO | torrent-set | renamed "speed-limit-down" to "downloadLimit"
- | | NO | torrent-set | renamed "speed-limit-down-enabled" to "downloadLimited"
- | | NO | torrent-set | renamed "speed-limit-up" to "uploadLimit"
- | | NO | torrent-set | renamed "speed-limit-up-enabled" to "uploadLimited"
+ | | yes | torrent-set | new arg "seedRatioLimit"
+ | | yes | torrent-set | new arg "seedRatioLimited"
+ | | NO | torrent-set | renamed "speed-limit-down" to "downloadLimit"
+ | | NO | torrent-set | renamed "speed-limit-down-enabled" to "downloadLimited"
+ | | NO | torrent-set | renamed "speed-limit-up" to "uploadLimit"
+ | | NO | torrent-set | renamed "speed-limit-up-enabled" to "uploadLimited"
| | | |
| | yes | torrent-get | new arg "bandwidthPriority"
| | yes | torrent-get | new arg "fileStats"