mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-07-21 09:09:22 +00:00
When an Xtream Codes provider returns no live streams on a routine refresh (a transient upstream failure, a fetch exception, or no enabled category matching), collect_xc_streams() returns an empty list. The refresh then fell through to stale-marking and sync_auto_channels, which -- with nothing seen this refresh -- deletes the account's entire auto-created channel lineup via its per-group "no streams remaining" branch. Guard the XC branch of _refresh_single_m3u_account_impl: on an empty result, set the account to ERROR and return before stale-marking and auto-sync, mirroring the standard-path empty/failed-download guards already in the function. A transient empty fetch can no longer destroy channels. Adds apps/m3u/tests/test_xc_empty_fetch_guard.py covering both the abort (sync not called, channels preserved, streams not marked stale, status ERROR) and the healthy path (non-empty fetch still runs sync). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| accounts | ||
| api | ||
| backups | ||
| channels | ||
| connect | ||
| dashboard | ||
| epg | ||
| hdhr | ||
| m3u | ||
| output | ||
| plugins | ||
| proxy | ||
| vod | ||