Add abort_on_close functionality to HTTP session handling#836
Open
lxga wants to merge 1 commit intocloudflare:mainfrom
Open
Add abort_on_close functionality to HTTP session handling#836lxga wants to merge 1 commit intocloudflare:mainfrom
lxga wants to merge 1 commit intocloudflare:mainfrom
Conversation
This update introduces the abort_on_close feature to control behavior when a client closes the connection after the request body. When enabled (default), it results in a ConnectionClosed error, allowing the proxy to abort immediately. When disabled, the proxy can continue processing the upstream response.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses #305
Summary
Add
abort_on_closefor HTTP/1.1 downstream sessions, aligned with HAProxy’sabortonclosebehavior.By default,
abort_on_close=true: if the client closes after sending the request (sends a TCP FIN,read == 0), Pingora aborts early withConnectionClosed(as before), which helps avoid wasting work on requests the client likely abandoned. This can be disabled per session viaset_abort_on_close(false)to keep the write side open and continue delivering upstream responses for half-closed clients.Rationale
This follows the operational HAProxy approach (
option abortonclose) to stop processing work early when the client is gone, while still allowing opt-out behavior for RFC-style tolerance.Per RFC 9112 9.6, a client half-close does not delimit request message semantics and does not necessarily mean the client is uninterested in the response; transport signals alone are not reliable edge-case semantics for HTTP/1.1. This change therefore makes early-abort a configurable policy, with a conservative default for proxy efficiency.