Skip to content

Fix aiohttp ignore_localhost consuming response body#978

Open
AronsonDan wants to merge 1 commit intokevin1024:masterfrom
AronsonDan:fix/aiohttp-ignore-localhost-body-consumed
Open

Fix aiohttp ignore_localhost consuming response body#978
AronsonDan wants to merge 1 commit intokevin1024:masterfrom
AronsonDan:fix/aiohttp-ignore-localhost-body-consumed

Conversation

@AronsonDan
Copy link

Summary

  • When ignore_localhost=True (or ignore_hosts) is set, record_responses() eagerly calls response.read() to capture the body before cassette.append() checks filter_request(). For ignored hosts, the response is never saved to the cassette, but the body stream is already consumed. This causes IncompleteReadError for callers that subsequently try to read the response (e.g. aiobotocore reading S3 responses from moto).
  • Fix: skip record_responses() entirely when filter_request() indicates the request should be ignored, preserving the response body for the caller.
  • Added a regression test in test_aiohttp.py.

Test plan

  • New test test_ignore_localhost_does_not_consume_response_body passes
  • All 29 aiohttp integration tests pass
  • All 4 ignore integration tests pass

🤖 Generated with Claude Code

When ignore_localhost=True and a request targets localhost, record_responses()
would call response.read() to capture the body before cassette.append()
checked filter_request(). For ignored hosts the response was never saved,
but the body stream was already consumed, causing IncompleteReadError for
callers that subsequently tried to read the response (e.g. aiobotocore).

Skip record_responses() entirely when filter_request() indicates the request
should be ignored.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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