Port qBittorrent to libtorrent-rasterbar v0.15

Registered by Christophe Dumez

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_resume_data, which the torrent is in when it's first added, and is comparing the files on disk with the resume data [IMPLEMENTED]

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:
milestone icon 2.0.0
Started by
Christophe Dumez
Completed by
Christophe Dumez

Related branches

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
          encounters a disk-full error for instance
        * 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
          contiguous blocks instead of the least recently used
        * 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
          min_memory_usage() and high_performance_seeder()
        * 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
          session_settings
        * 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_resume_data, which
          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

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.