Skip to content

Add abort_on_close functionality to HTTP session handling#836

Open
lxga wants to merge 1 commit intocloudflare:mainfrom
lxga:abort_on_close
Open

Add abort_on_close functionality to HTTP session handling#836
lxga wants to merge 1 commit intocloudflare:mainfrom
lxga:abort_on_close

Conversation

@lxga
Copy link

@lxga lxga commented Mar 9, 2026

Addresses #305

Summary

Add abort_on_close for HTTP/1.1 downstream sessions, aligned with HAProxy’s abortonclose behavior.

By default, abort_on_close=true: if the client closes after sending the request (sends a TCP FIN, read == 0), Pingora aborts early with ConnectionClosed (as before), which helps avoid wasting work on requests the client likely abandoned. This can be disabled per session via set_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.

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants