Files
responder/tests
kennethreitz 36abcb402e Batch 7: fix regressions found by adversarial review; bump to 4.1.0
Adversarial multi-agent review of the full diff surfaced real issues
(several in my own additions); all fixed and regression-tested:

- response_model: only validate dict/model bodies and only for actual
  Pydantic models — `response_model=list` (a documented marker) no longer
  500s, and list bodies pass through untouched as in v4.0.
- Open-redirect guard: normalize backslashes and leading control/whitespace
  before classifying, so `/\evil.com` & friends are blocked (browsers treat
  `\` as `/`).
- Server sessions: reverted the dirty-tracking/deepcopy optimization — it
  broke sliding backend TTL (premature logout) and crashed on
  non-deepcopyable MemoryBackend values. Back to v4.0 always-write semantics.
- Reverted the ServerErrorMiddleware-outermost reorder: it dropped
  X-Request-ID and mislogged status on 500s. Restored v4.0 ordering.
- req.params: decode the scope query string as UTF-8 (not latin-1) so raw
  non-ASCII queries aren't mojibaked; keeps the no-urlparse speedup.
- GraphQL max_depth: follow fragment spreads so depth can't be smuggled via
  chained fragments (cycles broken; operations measured as roots).
- Type-hint body injection: gate to POST/PUT/PATCH/DELETE and skip params
  that declare a default, so GET and optional-model handlers keep working.

Bumps version to 4.1.0 and finalizes the changelog.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 02:59:18 -04:00
..
2018-10-13 13:59:46 +01:00
2026-03-25 19:48:54 -04:00
2026-03-24 15:21:04 -04:00