Incomplete Response Body in handleUpstreamResponse
Description
The server intermittently returns incomplete or empty response bodies, particularly with responses larger than 4KB.
Steps to Reproduce
- Start the server:
docker compose up --build
- Make requests to an endpoint that returns >4KB:
curl -v http://localhost:8080/get
- Repeat multiple times
Expected Behavior
Consistently returns complete response body for every request.
Actual Behavior
- Sometimes returns complete response
- Sometimes returns partial/empty response
- No errors logged
Environment
- OS: Linux Docker
- Go Version: go1.23.2
- Commit: c6a947a
Root Cause
handleUpstreamResponse in internal/server/server.go uses a fixed 4KB buffer and doesn't handle:
- Responses larger than buffer size
- Chunked transfer encoding
- Partial reads/writes
Proposed Fix
- Implement dynamic buffering for large responses
- Add chunked transfer encoding support
- Handle partial reads/writes
- Improve error logging
Severity
High - Affects response reliability
Reproduction Rate
Intermittent (happens sometimes, not always)
Incomplete Response Body in handleUpstreamResponse
Description
The server intermittently returns incomplete or empty response bodies, particularly with responses larger than 4KB.
Steps to Reproduce
Expected Behavior
Consistently returns complete response body for every request.
Actual Behavior
Environment
Root Cause
handleUpstreamResponseininternal/server/server.gouses a fixed 4KB buffer and doesn't handle:Proposed Fix
Severity
High - Affects response reliability
Reproduction Rate
Intermittent (happens sometimes, not always)