iPhone: step probes + full hls.js error stream to server

The play-probe now lands (iPhone: iOS 18.7 Safari, hls.js path, MSE ok),
but the /stream XHR never reaches the server on the failing attempts —
impossible under the known code path. Instrument each step
(new-hls-ok / loadsource-called / attach-ok) and log EVERY hls.js error
(fatal+non-fatal, with retry counter) so the client timeline is visible
server-side. Also fixed JSV constant drift (was stuck at 10).
events endpoint: accept hls-err, forward step/fatal/details/buffer/retry/http.
This commit is contained in:
jozamudi committed 2026-08-31 20:48:02 +00:00
1 parent 3df074a5fe
commit aba266ee4b
3 files changed
+14 -5

No files matched your search

+3 -2
View File
@@ -285,12 +285,13 @@ def api_events(evt: dict = Body(...), request: Request = None):
# client-reported events; the diagnostics the browser can uniquely see
# (playback failures, capability probes) happen client-side, not in the
# request log — so the phone reports them here
if evt.get("type") not in ("error", "client-fail", "play-probe"):
if evt.get("type") not in ("error", "client-fail", "play-probe", "hls-err"):
raise HTTPException(422, "unknown event type")
c = db.connect()
db.event(c, request.state.user, evt["type"],
{k: evt[k] for k in ("ep_id", "ep", "lang", "msg", "detail",
"jsv", "branch", "hls_lib", "mse", "native_hls", "ua") if k in evt})
"jsv", "branch", "hls_lib", "mse", "native_hls", "ua",
"step", "fatal", "details", "buffer", "retry", "http") if k in evt})
c.commit()
c.close()
return {"ok": True}