Port qBittorrent to libtorrent-rasterbar v0.15
libtorrent v0.15 has been branched, we should probably port qBittorrent to this new release in the near future.
qBittorrent code compiles out of the box with new libtorrent but the following new features may require special attention:
* introduced an upload mode, which torrents are switched into when it hits a disk write error, instead of stopping the torrent. this lets libtorrent keep uploading the parts it has when it encounters a disk-full error for instance [UNREQUIRED?]
* added option for udp tracker preference
* added super seeding [IMPLEMENTED]
* introduced another torrent state, checking_
Blueprint information
- Status:
- Complete
- Approver:
- Christophe Dumez
- Priority:
- High
- Drafter:
- Christophe Dumez
- Direction:
- Approved
- Assignee:
- Christophe Dumez
- Definition:
- Approved
- Series goal:
- None
- Implementation:
- Implemented
- Milestone target:
- 2.0.0
- Started by
- Christophe Dumez
- Completed by
- Christophe Dumez
Related branches
Related bugs
Sprints
Whiteboard
New features in libtorrent v0.15:
* reduced the number of floating point operations (to better support
systems without FPU)
* added new alert when individual files complete
* added support for storing symbolic links in .torrent files
* added support for uTorrent interpretation of multi-tracker torrents
* handle torrents with duplicate filenames
* piece timeouts are adjusted to download rate limits
* encodes urls in torrent files that needs to be encoded
* fixed not passing &supportcrypto=1 when encryption is disabled
* introduced an upload mode, which torrents are switched into when
it hits a disk write error, instead of stopping the torrent.
this lets libtorrent keep uploading the parts it has when it
* improved disk error handling and expanded use of error_code in
error reporting. added a bandwidth state, bw_disk, when waiting
for the disk io thread to catch up writing buffers
* improved read cache memory efficiency
* added another cache flush algorithm to write the largest
* introduced a mechanism to be lighter on the disk when checking torrents
* applied temporary memory storage optimization to when checking
a torrent as well
* removed hash_for_slot() from storage_interface. It is now implemented
by using the readv() function from the storage implementation
* improved IPv6 support by announcing twice when necessary
* added feature to set a separate global rate limit for local peers
* added preset settings for low memory environments and seed machines
* optimized overall memory usage for DHT nodes and requests, peer
entries and disk buffers
* change in API for block_info in partial_piece_info, instead of
accessing 'peer', call 'peer()'
* added support for fully automatic unchoker (no need to specify
number of upload slots). This is on by default
* added support for changing socket buffer sizes through
* added support for merkle hash tree torrents (.merkle.torrent)
* added 'seed mode', which assumes that all files are complete
and checks hashes lazily, as blocks are requested
* added new extension for file attributes (executable and hidden)
* added support for unbuffered I/O for aligned files
* added workaround for sparse file issue on Windows Vista
* added new lt_trackers extension to exchange trackers between
peers
* added support for BEP 17 http seeds
* added read_piece() to read pieces from torrent storage
* added option for udp tracker preference
* added super seeding
* added add_piece() function to inject data from external sources
* add_tracker() function added to torrent_handle
* if there is no working tracker, current_tracker is the
tracker that is currently being tried
* torrents that are checking can now be paused, which will
pause the checking
* introduced another torrent state, checking_
the torrent is in when it's first added, and is comparing
the files on disk with the resume data
* DHT bandwidth usage optimizations
* rate limited DHT send socket
* tracker connections are now also subject to IP filtering
* improved optimistic unchoke logic
* added monitoring of the DHT lookups
* added bandwidth reports for estimated TCP/IP overhead and DHT
* includes DHT traffic in the rate limiter
* added support for bitcomet padding files
* improved support for sparse files on windows
* added ability to give seeding torrents preference to active slots
* fixed to add filename on web seed urls that lack it