Skip to content

fix(transport): handle WinHttpReceiveResponse failure#1620

Merged
jpnurmi merged 4 commits intomasterfrom
jpnurmi/fix/winhttp
Apr 2, 2026
Merged

fix(transport): handle WinHttpReceiveResponse failure#1620
jpnurmi merged 4 commits intomasterfrom
jpnurmi/fix/winhttp

Conversation

@jpnurmi
Copy link
Copy Markdown
Collaborator

@jpnurmi jpnurmi commented Apr 1, 2026

WinHttpReceiveResponse failures (e.g. on connection reset) were silently ignored, causing the status code to default to 0. The SDK treated this as a successful send, so when that failure was hit, the envelope was not correctly retried or cached.

The issue was exposed while adding unreachable_dsn pytest fixture that uses TCP RST for instant connection failures, replacing the hardcoded unreachable "127.0.0.1:19999" DSN that caused ~2s WinHTTP timeouts per test on Windows. The test changes are included as they expose the bug. As a bonus, they also speed up such retry and cache tests on Windows that require an unreachable DSN.

jpnurmi and others added 4 commits April 1, 2026 12:42
WinHttpReceiveResponse failure (e.g. connection reset after successful
send) was silently ignored, causing the status code to default to 0.
The SDK treated this as a successful send, so the envelope was neither
retried nor cached — silently lost.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace hardcoded unreachable DSN (127.0.0.1:19999) with a session-
scoped fixture that runs a TCP server accepting and immediately
resetting connections. This gives the SDK an instant connection failure
instead of waiting ~2s for WinHTTP to timeout on a closed port.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jpnurmi jpnurmi marked this pull request as ready for review April 1, 2026 11:37
@jpnurmi jpnurmi merged commit e12743b into master Apr 2, 2026
55 checks passed
@jpnurmi jpnurmi deleted the jpnurmi/fix/winhttp branch April 2, 2026 08:18
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.

2 participants