Problem
When an HTTP Client observes connector cutoff and its reconnect timer has expired, Client.service() currently reopens the transport before servicing the old Respondent. Reopening resets the parser generation first, so accepted bytes from the closed connection can be parsed under the new generation or remain suspended.
This loses the distinction between a valid close-delimited response, a truncated framed response, and an SSE stream whose final accepted event updates the retry interval.
Expected behavior
- Latch EOF and service the old response generation before reconnecting.
- Package a valid close-delimited response before reset.
- Package truncated framed input as an errored response.
- Parse accepted SSE events and use their retry interval for reconnect.
- Clear residual old-generation receive bytes only after settlement.
- Defer new connection admission and sends until a later recurrence.
Upstream dependency
This is not safe to submit against current main. It depends on #188, which itself must follow PRs #183, #185, and #187. The release branch already contains that prerequisite chain.
Problem
When an HTTP
Clientobserves connector cutoff and its reconnect timer has expired,Client.service()currently reopens the transport before servicing the oldRespondent. Reopening resets the parser generation first, so accepted bytes from the closed connection can be parsed under the new generation or remain suspended.This loses the distinction between a valid close-delimited response, a truncated framed response, and an SSE stream whose final accepted event updates the retry interval.
Expected behavior
Upstream dependency
This is not safe to submit against current
main. It depends on #188, which itself must follow PRs #183, #185, and #187. The release branch already contains that prerequisite chain.