Skip to content

feat(security): limit request body size - #659

Open
oxura wants to merge 2 commits into
cot-rs:masterfrom
oxura:feat/341-request-body-limit
Open

feat(security): limit request body size#659
oxura wants to merge 2 commits into
cot-rs:masterfrom
oxura:feat/341-request-body-limit

Conversation

@oxura

@oxura oxura commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Closes #341.

Request bodies are currently unbounded at the project boundary. An upload or chunked request can therefore keep growing until the process runs out of memory.

This adds a global 2 MiB default and a max_request_body_size TOML setting for projects that need a different ceiling. Every incoming body is wrapped before it reaches routing or middleware, and the limit counts bytes across the full stream rather than trusting Content-Length.

When the limit is crossed, the body returns a Cot error with HTTP 413. The error keeps the normal project error path intact, so production uses the configured error handler; in debug diagnostics the message points directly at max_request_body_size. Existing body errors also keep their original Cot status instead of being flattened into a 400 while crossing the wrapper.

Coverage includes the exact boundary, a multi-chunk overflow, TOML/default configuration, and an end-to-end project test proving a custom error handler receives and returns the 413.

Checked with:

  • cargo test -p cot_core body::tests (8 passed)
  • cargo test -p cot --all-features request_body_limit (2 passed)
  • cargo clippy -p cot_core -p cot --all-targets --all-features -- -D warnings
  • cargo fmt --all -- --check
  • git diff --check

@github-actions github-actions Bot added C-lib Crate: cot (main library crate) C-core labels Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C-core C-lib Crate: cot (main library crate)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Request body limiting

1 participant