Conversation
louzt
marked this pull request as ready for review
June 15, 2026 06:28
Author
Operational Friction & Priority ContextTo provide full transparency on (my) priority: this patch is my primary merge wish right now, as it resolves a critical operational block. I hit this constraint firsthand while troubleshooting my IPTV provider setup after they migrated their upstream endpoint URL and port. Initially, I suspected an asymmetric routing mismatch between my local interface output and the active VPN layer. However, after reverse-engineering the endpoint exchanges and performing a deep dive into the local runtime caches and SQLite database schema, the root cause became explicit:
State Machine Recovery Sequence:sequenceDiagram
autonumber
participant UI as Visual Configuration UI
participant DB as SQLite Local Database
participant Worker as Background Refresh Task
participant Prov as Upstream Provider (Mutated Port)
UI->>DB: Updates base Source URL cleanly (Visual OK)
Worker->>DB: Fetches historical channel rows (Stale Endpoint Refs)
Worker->>Prov: Dispatches refresh request to legacy port
Prov-->>Worker: Connection dropped or HTML text returned
Note over Worker: reqwest drains non-JSON slop
Worker->>Worker: Deserialization panic (Crashes queue)
Note over DB: Channels remain permanently frozen
|
Author
|
Would love to get this landed first to unblock standard data refresh pipelines, or allow me further research. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fix the
expected value at line 1 column 1error when Xtream API returns non-JSON responses (empty body, HTML error pages, HTTP 502/404). Two call sites fixed.What Changed
Before:
client.get(url).send().await?.json::<T>().await?After: validates HTTP status + empty body + non-JSON content before deserializing.
Two functions patched:
get_xtream_http_data<T>()andget_status().Why / Why This Shape
.json()panic.Compatibility Note
Valid Xtream API responses are unchanged.
Scope Boundary
Validation