/
/
/
# What does this implement/fix? Remote access proxies album art over its own WebRTC data channel. Both the fetch and the write-back were unbounded: a client that stops draining its receive buffer parks the write-back forever, which holds that channel's send lock and one of the six gateway-wide proxy slots for the life of the session. From then on no further art goes out on that channel, while the API channel keeps looking healthy. Found by code inspection while looking into a report of album art dying on a cast dashboard, so this is hardening rather than a fix for a reproduced bug. - Bound each proxied frame's wait for the client to drain (10s); a reply the client never takes is dropped with a warning instead of parking the lock and the slot - Give the proxied fetch an explicit 20s budget instead of relying on aiohttp's 5 minute default, and answer a timed-out fetch with a 504 rather than a stack trace. Both budgets sit inside the 30s a client waits before abandoning a proxied request - Note in the webserver README that a reply can now end short of its announced size - Tests covering both timeouts, plus that a stalled reply no longer blocks the next one or exhausts the proxy budget **Related issue (if applicable):** - n/a ## Types of changes - [ ] Bugfix (non-breaking change which fixes an issue) — `bugfix` - [ ] New feature (non-breaking change which adds functionality) — `new-feature` - [ ] Enhancement to an existing feature — `enhancement` - [ ] New music/player/metadata/plugin provider — `new-provider` - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) — `breaking-change` - [ ] Refactor (no behaviour change) — `refactor` - [ ] Documentation only — `documentation` - [x] Maintenance / chore — `maintenance` - [ ] CI / workflow change — `ci` - [ ] Dependencies bump — `dependencies` ## Checklist - [x] The code change is tested and works locally. - [x] `pre-commit run --all-files` passes. - [x] `pytest` passes, and tests have been added/updated under `tests/` where applicable. - [ ] For changes to shared models, the companion PR in `music-assistant/models` is linked. - [ ] For changes affecting the UI, the companion PR in `music-assistant/frontend` is linked. - [x] I have read and complied with the project's [AI Policy](https://github.com/music-assistant/.github/blob/main/AI_POLICY.md) for any AI-assisted contributions. - [ ] I have [raised a PR against the documentation repository](https://github.com/music-assistant/music-assistant.io/blob/main/CONTRIBUTING.md) targeting the main or beta branch as appropriate.