commit a59d7c92209d7306d4f41af1ce3dc0b2f5fd88c2 [browse]
Author: Matt Joiner
Date: 2026-03-28 16:45:46 +11:00
Fix Windows CI failures due to Hyper-V port exclusion zones
On Windows with Hyper-V, large contiguous blocks of the dynamic port range
(49152-65535) are excluded for UDP by WinNAT/HNS. When TCP binds to port P
in this range, the subsequent UDP bind fails with WSAEACCES. With only 10
retries, the OS sequential port assignment cursor stays within the exclusion
zone (observed: 51838, 51848, ... all failing).
Fix by setting the dynamic port range to 20000-36383 in CI before tests run,
avoiding the Hyper-V exclusion zone. Also raise listenAllRetryLimit from 10
to 150 for resilience on non-CI Windows machines.
commit 3fff0ed9c1b92e04c8adf133db4e0685b01d59df [browse]
Author: Matt Joiner
Date: 2026-03-28 11:51:57 +11:00
webseed: handle per-file unavailability (404/403/410/451) without conviction
When a webseed returns 404 (or 403, 410, 451) for a specific file, remove
only that file's pieces from the webseed's bitmap and decrement their
availability, rather than convicting the whole peer for a minute. This
allows the scheduler to immediately reassign those pieces to another
webseed that has the file.
The unavailable-file path returns nil so sliceProcessor skips the random
0-10s error sleep.
Also wire up the webseed scheduler to fire promptly when pieces become
wanted (e.g. on DownloadAll): updatePeerRequestsForPiece now iterates
t.webSeeds and calls onNeedUpdateRequests, which triggers
updateWebseedRequestsWithReason via the coalescing timer when the host
is below the low-water mark. All calls go through the timer so rapid
bursts coalesce into a single scheduler run.
Consolidate the zero/low-water threshold into Client.webseedHostLowOnRequests
and use it in both sliceProcessor and onNeedUpdateRequests.
Add TestDownloadFromTwoNonOverlappingWebseeds: two httptest servers each
serving one file of a multi-file torrent, verifying the client assembles
the complete download from both webseeds simultaneously.
commit e0ddbe9099538ed87786eb66d9a8eeba364ba6ba [browse]
Author: Matt Joiner
Date: 2026-03-27 14:18:05 +11:00
Add webseed test
commit ef45b0200cc42a3f0ee554ce3a9bc6722ab52cdc [browse]
Author: Matt Joiner
Date: 2026-03-27 12:58:03 +11:00
Convert remaining bitmaps to typed v2 wrapper
commit f533f67ae0a1971688506437a8ff848f125011ad [browse]
Author: DhruvilK7
Date: 2026-03-10 03:21:56 +05:30
migration to roaring v2 and used GetCardinalityInRange API
clone the repository to get more history