@torrent-tv/proxy 2.9.108 → 2.9.109
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 +11 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## 2.9.109
|
|
2
|
+
|
|
3
|
+
- **Chore**: A session now outlives a vanished browser by thirty minutes instead of ten. The number means something different since server 0.8.103: a browser that holds a session re-asserts it every 30 s, so an open tab never consumes this at all — not while paused, not across a three-hour film. What is left is the case where the browser has genuinely gone, and keeping the session means such a viewer returns to a warm encoder rather than a cold start. While nobody is there the encoder is suspended and burns no CPU; the cost is disk for the produced segments, already bounded by the pool's 10 GB cap with eviction. Thirty minutes covers a meal, a phone call or a lift ride.
|
|
4
|
+
|
|
1
5
|
## 2.9.108
|
|
2
6
|
|
|
3
7
|
- **New**: A send queue that stops draining now says WHY, instead of leaving the cause to be guessed at. Field 2026-08-06: a channel stayed open, kept accepting requests and delivered nothing for eleven minutes — the queue grew from 214 049 to 239 731 bytes in fourteen seconds and never fell, while the route reported answering in 15 ms and the channel reported itself open. `bufferedAmount` alone cannot distinguish the possible causes; it only proves the bytes are still ours. Each channel is now sampled every second, and once its queue has failed to fall for five seconds the transport itself is asked: bytes sent, bytes received, round-trip time, connection and ICE state, and the candidate pair in use — then again every second, so the trend of each counter is in the log rather than one snapshot. The reading is decided in advance and written beside the code: bytes-sent rising with the queue means packets leave and nothing acknowledges them (the return path is broken); bytes-sent flat with the queue rising means SCTP is not transmitting at all (the peer's receive window is shut, or congestion control has collapsed); bytes-received still rising in either case proves the peer is alive and the failure is one-directional.
|
package/package.json
CHANGED
|
@@ -137,7 +137,17 @@ const MAX_SEEK_FAILURES = 3;
|
|
|
137
137
|
// look-ahead cap when idle, so a lingering session costs retained segments on
|
|
138
138
|
// disk, not sustained CPU. Active playback refreshes the timer on every segment
|
|
139
139
|
// fetch, so it never expires mid-watch.
|
|
140
|
-
|
|
140
|
+
// How long a session outlives the BROWSER, not the viewing. Since server
|
|
141
|
+
// 0.8.103 a browser that holds a session re-asserts it every 30 s, so an open
|
|
142
|
+
// tab never consumes this at all — not while paused, not across a three-hour
|
|
143
|
+
// film. What is left is the case where the browser has genuinely gone: the tab
|
|
144
|
+
// was killed without releasing, the phone slept, the network dropped. Keeping
|
|
145
|
+
// the session means such a viewer comes back to a warm encoder instead of
|
|
146
|
+
// waiting out a cold start; the cost while nobody is there is disk for the
|
|
147
|
+
// produced segments, since the encoder is suspended and burns no CPU, and that
|
|
148
|
+
// disk is already bounded by the pool's 10 GB cap with eviction. Thirty minutes
|
|
149
|
+
// covers a meal, a phone call or a lift ride.
|
|
150
|
+
const DEFAULT_SESSION_TTL_MS = 30 * 60 * 1000;
|
|
141
151
|
const DEFAULT_STARTUP_WAIT_MS = 5_000;
|
|
142
152
|
// Realtime budget — runtime downswitch (software encoder only). Periodically
|
|
143
153
|
// check each active software-transcode session's ffmpeg `speed`; when it stays
|