Skip to content

fix(komide): bound feed/episode fetch, fix backoff overflow, add coverage - #495

Merged
forkwright merged 1 commit into
mainfrom
fix/komide-podcast-feed
Jul 2, 2026
Merged

fix(komide): bound feed/episode fetch, fix backoff overflow, add coverage#495
forkwright merged 1 commit into
mainfrom
fix/komide-podcast-feed

Conversation

@forkwright

Copy link
Copy Markdown
Owner

Closes #368, #369, #370, #371, #455, #456. Configurable feed/episode size caps (20 MiB / 1 GiB) with streaming enforcement; clamped saturating backoff; error_for_status on feed/episode; refresh/304/store_validators coverage via an in-crate HTTP test server (no new dep). kanon gate --full green.

…rage

- #368: fetch_feed/download_episode enforce configurable caps
  (max_feed_bytes default 20 MiB, max_episode_bytes default 1 GiB) —
  Content-Length precheck plus per-chunk streaming total, aborting with
  ResponseTooLarge; download_episode streams to disk and cleans up a
  partial file on failure.
- #369: exponential backoff clamps the exponent (min 63) and uses
  saturating arithmetic, so it no longer overflows after 64 failures.
- #455: fetch_feed/download_episode call error_for_status after the 304
  early-return, so 4xx/5xx bodies are no longer treated as content.
- #370/#371/#456: coverage for the streaming episode download, the
  refresh_feed poll path, and the NotModified (304)/store_validators path,
  using an in-crate one-shot HTTP test server (no new workspace dep).

Closes #368
Closes #369
Closes #370
Closes #371
Closes #455
Closes #456

Gate-Passed: kanon 0.1.5 +stages:fmt,check,clippy,nextest,lint sha:1dad62d4d5fc715b1481b59b3aaa6e9cd966824b
@forkwright
forkwright merged commit bb59ff4 into main Jul 2, 2026
11 checks passed
@forkwright
forkwright deleted the fix/komide-podcast-feed branch July 2, 2026 15:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

HTTP response bodies are buffered fully into memory with no size cap

1 participant