mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-30 11:03:21 +01:00
Route proxy-mode live TS through the xc_fanout daemon behind the `live_fanout` settings flag, taking PHP out of the byte path. When the flag is on, live.php runs its existing auth unchanged, then instead of the socket_read→echo relay it registers the source with the daemon over the control unix socket and hands the viewer to nginx via `X-Accel-Redirect: /xc_fanout/live/<id>` — the FPM worker is freed immediately, same pattern as P1 HLS delivery. Flag off (the default) keeps the legacy relay; a failed registration falls through to it in-request, so a down daemon degrades gracefully. - FanoutClient: control-socket client (PUT/DELETE /streams/<id> over FANOUT_CTL_SOCK via cURL unix socket) + buildSource(), a pure mirror of ProxyCommand's stream_source/user_agent/proxy/cookie extraction whose JSON matches the daemon's streamConfig. - Paths: FANOUT_RUN_PATH / FANOUT_CTL_SOCK / FANOUT_HTTP_SOCK under /run. - nginx: internal `location ^~ /xc_fanout/live/` → proxy_pass unix daemon client socket (buffering off, long read timeout). - FanoutClientTest: 8 cases covering source-config parity and the empty-urls short-circuit. Refs ADR 0002. Daemon lives in XC_VM_Binaries (not this repo).