Changelog
- add missing python binding for filenames class
- fix edge case in filename deduplication
- fix web seed coalesced requests for v2 torrents
- fix pre-allocation after enabling files with pread disk I/O
- fix race between stop torrent and hasher threads in pread_storage
- prevent pread disk I/O from overwriting files when renaming
- fix file priority updates being lost when issued in quick succession
- deprecate internal functions of file_storage
- optimize loading torrents
- fix mis-attribution of tracker source when loading a torrent file
- fix race between async_hash() and force_recheck()
What's Changed
- piece_picker generation by @arvidn in #8732
- fix signed overflow computing bitfield sizes in read_resume_data by @isl-Ramzi in #8720
- tool to analyze bencher output by @arvidn in #8739
- fix mis-attribution of tracker source when loading a torrent file by @arvidn in #8741
- extend CI to build 32bit builds on windows by @arvidn in #8738
- Valid char by @arvidn in #8743
- optimize resetting SHA-1 and SHA-256 context when using OpenSSL by @arvidn in #8746
- fix typos in RST format by @arvidn in #8748
- avoid computing the other info-hash when loading a non-hybrid torrent by @arvidn in #8745
- improve benchmark_load_torrent.py to be able to run specific cases by @arvidn in #8750
- fix out of bounds read in bdecode on truncated list or dict by @isl-Ramzi in #8754
- add fuzzer for (deprecated) bdecode() function by @arvidn in #8758
- fix out of bounds read loading a hybrid torrent with no pieces by @isl-Ramzi in #8759
- try to avoid sudo apt-get update stalling on CI by @arvidn in #8767
- make sure fuzz targets aren't optimized out by @arvidn in #8763
- optimize perf script invocations in benchmarks by @arvidn in #8772
- fix default abi version by @arvidn in #8774
- deprecate sanitize_symlinks(), all_path_hashes() and file_path_hash() by @arvidn in #8779
- fix file priority updates being lost when issued in quick succession by @arvidn in #8780
- improve proxy_hostname by @arvidn in #8782
- Test merge by @arvidn in #8787
- Limit compile definitions to specific platforms by @Chocobo1 in #8786
- let the operating system pick the listen port by @arvidn in #8791
- reject existing destinations in pread storage renames by @M-Hassan-Raza in #8792
- fix race in stop_torrent disk I/O job and a hasher thread by @arvidn in #8790
- fix pread pre-allocation after priority changes by @M-Hassan-Raza in #8797
- fix bounds check in merkle_tree by @arvidn in #8802
- Merkle tree fix 2.1 by @arvidn in #8807
- Fix redirects with query and fragment paths by @M-Hassan-Raza in #8813
- fix performance issue in get_piece_layer() by @arvidn in #8815
- Test merge by @arvidn in #8816
- fix validate_hash_request() by @arvidn in #8823
- Handle larger netlink datagrams during interface enumeration by @tzi4 in #8820
- fix bug in hash_picker timeout by @arvidn in #8826
- Test merge by @arvidn in #8832
- fix shutdown issue with in-flight incoming SSL peer connections by @arvidn in #8835
- Test merge by @arvidn in #8836
- Fix request merge 2.1 by @arvidn in #8834
- Format max_metadata_size calculation by @zidel in #8839
- the block hashes in merkle_tree have two meanings, either it's the ha… by @arvidn in #8842
- Merkle tree piece passed by @arvidn in #8843
- stricter check in merkle_validate_and_insert_proofs() by @arvidn in #8847
- add_hashes() reports already downloaded pieces as passed by @arvidn in #8846
- simplify hash request validation by @arvidn in #8848
- Test merge by @arvidn in #8844
- stricter checks of hash response messages by @arvidn in #8849
- fix merkle_tree::allocate_full() for single block file by @arvidn in #8853
- pad files are not downloaded from any peer by @arvidn in #8852
- factor out a helper for payload_blocks_in_piece() by @arvidn in #8854
- minor cleanup by @arvidn in #8855
- fix Transmission legacy peer-ID misparsing (-TRXYYR-) by @HouseOfHufflepuff in #8850
- fix edge case in merkle_tree::get_hashes() by @arvidn in #8858
- remove malloc_usable_size() and friends from buffer by @HouseOfHufflepuff in #8856
- Hash picker fixes by @arvidn in #8859
- Test merge by @arvidn in #8860
- the root node has no sibling by @arvidn in #8862
- improve hash_picker::hashes_rejected() by @arvidn in #8861
- handle hash rejected better by @arvidn in #8863
- Test merge by @arvidn in #8864
- fix parsing transmission 3.00 fingerprint by @arvidn in #8866
- improve test_transfer to tolerate minor timing differences by @arvidn in #8870
- fix deduplicate filenames by @arvidn in #8868
- add missing python binding for filenames class by @arvidn in #8872
- fix smart_ban and piece_picker notification of torrent::clear_peers() by @arvidn in #8874
- remove_all() by @arvidn in #8875
- Rename storage by @arvidn in #8876
- factor out rename_file() from storage back-ends by @arvidn in #8877
- support moving and renaming files/storage with symlinks by @arvidn in #8879
- fix some style issues by @arvidn in #8882
- attempt to improve copilot's reviews by @arvidn in #8881
- add overload to truncate_files() that take renamed files into account by @arvidn in #8885
- add missing python binding for filenames::file_name() by @arvidn in #8886
- fix docs parser to also recognize libtorrent::aux as internal namespace by @arvidn in #8897
- OS/2 also uses backslash, like windows by @arvidn in #8899
- bump version to 2.0.15 by @arvidn in #8902
- Test merge by @arvidn in #8903
- bump version to 2.1.2 by @arvidn in #8904
- fix subtle issue in inline assembly for CRC32 instructions by @arvidn in #8906
- Test merge by @arvidn in #8907
New Contributors
- @tzi4 made their first contribution in #8820
- @zidel made their first contribution in #8839
- @HouseOfHufflepuff made their first contribution in #8850
Full Changelog: v2.1.1...v2.1.2