mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
A bitvid (kind-30078) video with a perfectly playable hosted URL (verified: archive.org 200 video/mp4 with byte ranges) failed with "No playable source found." — the video element's src was never even set. Root cause: the hosted-URL probe (fetch HEAD, mode:no-cors) runs BEFORE src is assigned, inside the playback-start window — but URL_PROBE_TIMEOUT_MS (4s) is LONGER than PLAYBACK_START_TIMEOUT (3s). A slow no-cors HEAD (archive.org, and any host that doesn't answer HEAD fast) consumed the whole start budget, the withTimeout wrapper aborted the attempt, and the URL was never loaded. A `<video>` element plays cross-origin URLs WITHOUT CORS anyway, so the fetch probe was both unnecessary and actively harmful here. Fix: - Skip the probe entirely when there's no magnet (URL-only) — nothing to fail over to, so the video element loads the URL directly. This is the reported case; verified live: the video now plays (readyState 4, currentTime advancing). - An ambiguous/error probe no longer VETOES the URL (only a definitively-read "bad" status deprioritizes it, and even then only when a magnet fallback exists) — the video element + watchdogs are the real arbiter. Tests: spec-corrected the always-probe assertion to a dual-source case + added a URL-only skip-probe test (tests/services/playbackService.test.mjs). 17 pass. Co-Authored-By: Claude Fable 5 <[email protected]>