@torrent-tv/proxy 2.9.115 → 2.9.116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/package.json +1 -1
- package/services/hls-session-manager.js +7 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## 2.9.116
|
|
2
|
+
|
|
3
|
+
- **New**: A progress report says which height is being produced right now. Under automatic quality the proxy steps the resolution down when the host cannot encode in realtime or the viewer's link cannot carry the stream, and nothing said so — the menu read "Auto" whatever it had settled on. Zero when the video is copied, because then nothing is being chosen and the source's own height is what plays.
|
|
4
|
+
|
|
1
5
|
## 2.9.114
|
|
2
6
|
|
|
3
7
|
- **Fix**: A seek leaked a pinned piece, and enough of them destroyed the torrent. A piece is pinned before its fragment is handed to the reader and released by whoever received it — but a consumer that ABANDONS the read never gets the chance, and a seek abandons it every time: the encoder is killed, the response is torn down, the loop is left between two fragments. Field 2026-08-06, one seek was enough: the store answered `Every resident piece is pinned; no slot can be freed`, and it answered it to the WebTorrent client, which closed the store and destroyed the torrent — after which every read failed with `File 0 not found`, the session went terminal, and the segment the viewer was waiting for returned an instant error. The pin of a fragment still in the consumer's hands is now dropped by the reader itself on every exit, abandonment included. Covered by a test that abandons a read mid-fragment and checks the store has nothing pinned.
|
package/package.json
CHANGED
|
@@ -3284,6 +3284,13 @@ export class HlsSessionManager {
|
|
|
3284
3284
|
segmentDurationSec: this.segmentDurationSec,
|
|
3285
3285
|
speed: session.progress.speed,
|
|
3286
3286
|
outputMbps,
|
|
3287
|
+
// The height being produced RIGHT NOW. On automatic quality the proxy
|
|
3288
|
+
// steps down a rung when the host cannot keep up or the viewer's link
|
|
3289
|
+
// cannot carry the stream, and the menu said only "Auto" — so the one
|
|
3290
|
+
// question it raises, what am I actually watching, had no answer
|
|
3291
|
+
// anywhere. Zero when the video is copied, because then nothing is being
|
|
3292
|
+
// chosen: the source's own height is what plays.
|
|
3293
|
+
currentHeight: session.transcodeVideo ? (session.encodeHeight ?? 0) : 0,
|
|
3287
3294
|
updatedAt: session.progress.updatedAt,
|
|
3288
3295
|
error: session.state === "failed" ? session.lastError : ""
|
|
3289
3296
|
};
|