Two causes, both fixed:
- Plex keeps one file stream per device and cuts the one in progress when another starts, so the read-ahead
and the player cut each other off. Whole-file fetches (read-ahead, downloads, download-first) now ask for
the file as a download (?download=1), which Plex leaves out of that rule; the plain address follows for
servers that refuse downloads.
- Http.abort closed the socket of a response already read to the end, whose connection was back in the pool
and could be carrying the read-ahead. abort now leaves finished responses alone (test/PoolAbortTest.java).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>