What's Changed
- build against boost.json as header only. This makes it easier to chan… by @arvidn in #8279
- fix recent merge typo in torrent::force_tracker_request() by @arvidn in #8283
- new fuzzers by @arvidn in #8197
- Use Boost 1.91.0 in Windows CI by @xavier2k6 in #8281
- fix CIFuzz issue by @arvidn in #8290
- Update cibuildwheel workflow by @xavier2k6 in #8287
- document that support for BEP17 web seeds were removed by @arvidn in #8289
- Header only boost by @arvidn in #8291
- address python tests using deprecated functions by @arvidn in #8296
- fix support for multi-buffer writes in pread_storage by @arvidn in #8292
- address a data race in pread_disk_io by @arvidn in #8294
- NATPMP fixes by @arvidn in #8297
- Test merge by @arvidn in #8298
- fix flaky python test by @arvidn in #8295
- Add Python MacOS x86_64 builds to cibuildwheel by @qstokkink in #8285
- fix flaky test involving web_server.py in windows by @arvidn in #8300
- Clang tidy by @arvidn in #8301
- post peer_disconnected_alert even if the peer never completed the han… by @arvidn in #8302
- Bump some pre-commit hook revs by @xavier2k6 in #8288
- fixed piece-picker accounting issue for filtered pieces by @arvidn in #8305
- add clang-format configuration and a pre-commit rule for migration by @arvidn in #8303
- fix issue in filtered piece accounting in the piece_picker by @arvidn in #8304
- Use Boost.JSON as header-only via cmake by @Chocobo1 in #8280
- add feature to tick_interval setting to allow all work to run every m… by @arvidn in #8307
- update clang-tidy config by @arvidn in #8311
- fix race in session_handle::wait_for_alert() by @arvidn in #8312
- backport the wait_for_alert() fix from RC_2_1 by @arvidn in #8313
- Test merge by @arvidn in #8315
- disable python's and pytest's faulthandler by @arvidn in #8314
- make web seed connections fail earlier on invalid data by @arvidn in #8308
- update claude instructions by @arvidn in #8309
- Use header-only boost in Windows cmake workflow by @Chocobo1 in #8310
- clean up some strncmp() by using string_view by @arvidn in #8320
- fix socks5 parsing edge case by @arvidn in #8321
- stricter checking of tracker URLs by @arvidn in #8318
- tighten validation of v2 hash requests by @arvidn in #8322
- fix off-by-one in loading banned peers from resume data by @arvidn in #8323
- fix edge case in socks5 UDP unwrap() by @arvidn in #8324
- make parse_magnet_uri() stricter by @arvidn in #8325
- remove cirrus CI by @arvidn in #8326
- add warning message to read_resume_data() by @arvidn in #8328
- Test merge by @arvidn in #8329
- authenticate webtorrent tracker certificates by default by @arvidn in #8330
- fix incorrect invariant check in torrent.cpp by @arvidn in #8331
- GHA CI: Replace
third partyaction withnode24 compatiblevariant by @xavier2k6 in #8327 - Fix resume file save trigger on PEX/LSD change by @Bonstra in #8333
- optimize sanitization of symlinks when loading torrents by @arvidn in #8334
- optimizations to avoid unnecessary calls to piece_size_for_req() by @arvidn in #8335
- web seed fixes by @arvidn in #8337
- Fixup web seed by @arvidn in #8336
- Test merge by @arvidn in #8338
- fix clang warnings by @arvidn in #8339
- add max_directory_depth limit to load_torrent_limits by @arvidn in #8340
- sanitize add_torrent_params by @arvidn in #8341
- script to measure fuzzer code coverage by @arvidn in #8342
- Add torrent fuzzer by @arvidn in #8343
- fuzzer for parse_piece_layers by @arvidn in #8346
- improve sanitization of filenames, and symlinks in particular by @arvidn in #8344
- strengthen peer encryption (obfuscation) by @arvidn in #8350
- pe_crypto_state fuzzer by @arvidn in #8347
- fuzzer for identify_client by @arvidn in #8348
- in create_torrent, store symbolic links according to BEP 47 by @arvidn in #8349
- Test merge by @arvidn in #8351
- fix bug in combine_path by @arvidn in #8352
- address potential dangling pointers in smart_ban by @arvidn in #8357
- sanitize time counters in add_torrent_params by @arvidn in #8358
- Test merge by @arvidn in #8360
- add another phase to flushing blocks from the disk cache by @arvidn in #8359
- address data race in pread_disk_io by @arvidn in #8361
- utp_stream fuzzer by @arvidn in #8364
- fuzzer for local service discovery by @arvidn in #8363
- add fuzzer for udp tracker by @arvidn in #8362
- extend the UPnP fuzzer to actaually exercise the port mapping logic by @arvidn in #8365
- add NAT-PMP fuzzer by @arvidn in #8375
- fix bug in post_download_queue() when a torrent complete by @arvidn in #8376
- add two documentation comments for portmaps by @arvidn in #8371
- Fix quoted I2P SAM values by @M-Hassan-Raza in #8369
- Fix bandwidth channel iteration by @M-Hassan-Raza in #8374
- Return partial byte count from pwrite_all on error by @M-Hassan-Raza in #8380
- fix connection_tester with allow-fast by @arvidn in #8379
- add fuzzer for socks5 udp associate by @arvidn in #8378
- Connection tester by @arvidn in #8382
- fix race when removing an auto managed torrent by @arvidn in #8383
- Fix UPnP content-type checks by @M-Hassan-Raza in #8370
- don't print warning for some undocumented functions by @arvidn in #8385
- use v2 hashes for hybrid torrents, instead of smart_ban by @arvidn in #8386
- Handle short reads from part files by @M-Hassan-Raza in #8381
- Test merge by @arvidn in #8387
- add python binding alert.timestamp() by @milahu in #8368
- update run_benchmark.py by @arvidn in #8390
- improve performance of disk job pool by @arvidn in #8391
- Test merge by @arvidn in #8392
- add feature to connection_tester to generate resume data by @arvidn in #8394
- Improve benchmark by @arvidn in #8396
- fix generating v2 resume data in connection_tester by @arvidn in #8397
- fix bug in tracker announcements involving i2p trackers by @arvidn in #8398
- factor out shared code in portmap fuzzers by @arvidn in #8400
- fix v2 piece hash generation in connection_tester by @arvidn in #8401
- Fix peer class bandwidth channel capacity by @M-Hassan-Raza in #8388
- More fuzzers by @arvidn in #8402
- optimize count_jobs() in disk_cache.cpp by @arvidn in #8404
- add gen_corpus script by @arvidn in #8405
- Complete docs by @arvidn in #8403
- description of the documentation generation process by @arvidn in #8406
- address flakiness of webtorrent test by @arvidn in #8407
- claude fuzzers by @arvidn in #8408
- move the comma outside of the METRIC macro by @arvidn in #8411
- add build option to collect disk read latency statistics by @arvidn in #8412
- Fix mmap disk jobs stranded behind fences by @M-Hassan-Raza in #8389
- fix connection_tester output by @arvidn in #8416
- avoid busy looping in tests by @arvidn in #8413
- improve tools/run_benchmark.py by @arvidn in #8417
- Match DHT RPC replies by full endpoint by @M-Hassan-Raza in #8410
- Test merge by @arvidn in #8421
- optimize flushing of disk cache in pread_disk_io by @arvidn in #8422
- add documentation by @arvidn in #8409
- Tighten HTTP tracker peer parsing by @M-Hassan-Raza in #8423
- fix race on aborting disk jobs on shutdown by @arvidn in #8424
- improve try_cache_flush() call by @arvidn in #8425
- connection_tester: save merkle trees to separate file by @arvidn in #8427
- Improve benchmark scripts by @arvidn in #8429
- Mmap v2 block hashes by @arvidn in #8426
- Fix deprecated pair piece priorities by @M-Hassan-Raza in #8430
- add missing file and extend CI to detect it by @arvidn in #8433
- Fix reject piece request iteration by @M-Hassan-Raza in #8432
- simplify disk_buffer_holder by @arvidn in #8431
- fix issue with graceful pause during shutdown by @arvidn in #8435
- Fix DH xor mask secret padding by @M-Hassan-Raza in #8434
- Fix whole-piece prefetch overflow by @M-Hassan-Raza in #8436
- optimize parsing v2 torrent files (file_tree) by @arvidn in #8437
- Test merge by @arvidn in #8438
- fix test_resume.cpp when (old) deprecated functions are enabled by @arvidn in #8439
- remove invalid assert in disk_cache by @arvidn in #8440
- mark hashes as have=true to avoid double-requests by @arvidn in #8442
- Benchmark load torrent by @arvidn in #8443
- Fix SOCKS5 auth request bounds by @M-Hassan-Raza in #8441
- extend load_torrent benchmark with more cases by @arvidn in #8444
- Test merge by @arvidn in #8445
- stricter checks in hash-picker by @arvidn in #8446
- run tests in 32 bit mode on CI by @arvidn in #8447
- fix typo in get_drive_info() by @arvidn in #8448
- fix issue in uTP shutdown by @arvidn in #8450
- extend get_drive_info by @arvidn in #8452
- Stop tracker timeout web server by @hussainarslan in #8454
- simplify file_piece_range_inclusive() and file_piece_range_exclusive() by @arvidn in #8453
- Validate resume files touched by completed pieces by @hussainarslan in #8451
- stricter basic auth handling for web seed by @arvidn in #8319
- Fix DHT upload quota zero limit by @M-Hassan-Raza in #8456
- v2 block hashes can be computed concurrently by @arvidn in #8449
- clear HTTP credentials on redirected web seeds by @arvidn in #8455
- Test merge by @arvidn in #8457
- fix a concurrency bug in kick_hasher by @arvidn in #8459
- fix merkle proof cleanup by @arvidn in #8461
- bump version to 2.0.13 by @arvidn in #8462
- Test merge by @arvidn in #8464
- update tests in test_checking.cpp to use the new API by @arvidn in #8468
- fix async_hash bug in pread_disk_io by @arvidn in #8469
- harden merkle_tree proof validation by @arvidn in #8466
- Fix web seed Host header ports by @hussainarslan in #8460
- use the new host_header functions in more places by @arvidn in #8471
- Test merge by @arvidn in #8472
- Parameterize disk io by @arvidn in #8470
- test magnet links where the info-hash is updated by @arvidn in #8473
- use strong flag type in test_metadata_extension.cpp by @arvidn in #8475
- fix data race in disk_cache::flush_storage() by @arvidn in #8476
- fix issue counting disk I/O thread in pread_disk_io by @arvidn in #8477
- improve run_http_suite() by @arvidn in #8474
- fixup and simplify threads in add_fence_job() by @arvidn in #8478
- simplify flush_storage() by not making it erase the piece by @arvidn in #8479
- fix flaky test_flag by @arvidn in #8480
- increase timeout for expensive (thread-sanitizer) test run by @arvidn in #8482
- smoke test disk I/O on CI by @arvidn in #8481
- Pread write fence by @arvidn in #8467
- fix dead-lock in deferred clear_piece by @arvidn in #8485
- Parameterize test error handling by @arvidn in #8484
- Fix unaligned reads by @arvidn in #8483
- enable pread diskio as the default disk I/O backend by @arvidn in #8465
- cut 2.1 rc2 by @arvidn in #8486
New Contributors
- @Bonstra made their first contribution in #8333
- @M-Hassan-Raza made their first contribution in #8369
- @milahu made their first contribution in #8368
- @hussainarslan made their first contribution in #8454
Full Changelog: v2.1.0-rc1...v2.1.0-rc2