Skip to content

feat: nightly hardening - browserless response size cap#70

Open
mouse-value-add wants to merge 2 commits into
brainsparker:mainfrom
mouse-value-add:chore/frugal-nightly-hardening-20260529-browserless-html-size-cap
Open

feat: nightly hardening - browserless response size cap#70
mouse-value-add wants to merge 2 commits into
brainsparker:mainfrom
mouse-value-add:chore/frugal-nightly-hardening-20260529-browserless-html-size-cap

Conversation

@mouse-value-add

Copy link
Copy Markdown
Contributor

Problem

Browserless /content responses were read with an unbounded io.ReadAll, which could allow unexpectedly large rendered pages to consume excessive memory and destabilize MCP requests.

Approach

  • Added a hard 2 MiB cap for Browserless rendered HTML payloads (maxHTMLBytes).
  • Switched body reads to io.LimitReader(..., maxHTMLBytes+1) to detect overflow deterministically.
  • Return a permanent provider error when the cap is exceeded, so callers fail fast instead of retrying large payloads.
  • Added a provider test covering oversized payload behavior.

Verification

  • go test ./...
  • New test: TestRender_ResponseTooLargeIsPermanent in internal/provider/browserless/browserless_test.go

Risks

  • Some legitimately large pages may now be rejected when rendered HTML exceeds 2 MiB.
  • This is a tradeoff in favor of bounded memory and predictable behavior.

Rollback plan

  • Revert this PR to restore previous behavior, or increase maxHTMLBytes if real-world payloads require a higher ceiling.

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.

1 participant