fix hls close revision file at reader deadline (#907)

* fix hls close revision file at reader deadline

Move the progressive revision reader onto its own task and feed the
response stream through a bounded channel. At the deadline the watchdog
aborts the reader, so the file handle and revision pin are released
even if a stalled client never polls the stream again.

Each open revision file now holds its own pin, so GC cannot retire a
revision while a handle is open, including one held by an in-flight
blocking read.

* fix hls close revision file at reader deadline

Move the progressive revision reader onto its own task and feed the
response stream through a bounded channel. At the deadline the watchdog
aborts the reader, so the file handle and revision pin are released
even if a stalled client never polls the stream again.

Each open revision file now holds its own pin, so GC cannot retire a
revision while a handle is open, including one held by an in-flight
blocking read.

---------

Co-authored-by: euzu <euzu@proton.me>
This commit is contained in:
euzu
2026-10-09 17:41:39 +02:00
committed by GitHub
co-authored by euzu
parent 7cfd9ac3a9
commit d35875e3d1
804 changed files with 200880 additions and 187480 deletions
+3 -7
View File
@@ -118,14 +118,10 @@ jobs:
- name: Rust Cache
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
# Non-test code only. `--all-targets` would additionally compile the
# test modules, ~10 of which still use ungated `std::os::unix`
# (alias_repository, xtream_repository, bplustree/v3/publish,
# iptv/stalker/client, api_utils, api/model/download, setup_api).
# Widening this step means gating those first; the recording module
# tree is already `--all-targets`-clean on Windows.
# `--all-targets` also compiles the test modules, so Unix-only test
# helpers and imports must stay behind `#[cfg(unix)]`.
- name: Check Windows build
run: cargo check --package tuliprox
run: cargo check --workspace --all-targets
# Job 3: Build and Test (takes longer)
test: