Files
tuliprox/backend/dvr/Cargo.toml
T
d35875e3d1 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>
2026-10-09 17:41:39 +02:00

39 lines
1.2 KiB
TOML

[package]
name = "tuliprox-dvr"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
description = "Digital video recorder: the recording queue, scheduler, supervisors and retention"
[lints]
workspace = true
[dependencies]
shared = { workspace = true }
tuliprox-auth = { workspace = true }
tuliprox-core = { workspace = true }
tuliprox-messaging = { workspace = true }
tuliprox-repository = { workspace = true }
arc-swap.workspace = true
chrono.workspace = true
fastrand.workspace = true
chrono-tz = "0.10.4"
futures.workspace = true
libc = "0.2"
log.workspace = true
reqwest = { version = "0.13.4", features = ["json", "stream", "rustls", "socks", "form", "query"] }
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
tokio = { workspace = true, features = ["rt-multi-thread", "fs", "time", "macros", "sync", "process"] }
tokio-util = { version = "0.7.19", features = ["io", "io-util"] }
url.workspace = true
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.61.2", features = ["Win32_Storage_FileSystem"] }
[dev-dependencies]
blake3.workspace = true
tempfile = "3.27.0"
tokio = { workspace = true, features = ["test-util"] }