]> git.kaiwu.me - haproxy.git/commit
BUG/MINOR: http-ana: also set FINAL on http-response actions on server error
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 4 Nov 2026 08:47:04 +0000 (09:47 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 5 Nov 2026 17:20:59 +0000 (18:20 +0100)
commit096a1307b26d64c9a88cae072792bb5cc480a683
treefa7796fe128728e78b021630419e2061160eb9c5
parent6c5df88df8dedc46b4958fff8d0c2a24ce8bb8b2
BUG/MINOR: http-ana: also set FINAL on http-response actions on server error

http_res_get_intercept_rule() stops http-response actions from yielding once
the client side is dead: when the frontend connector reports an error or an
early close, the action is called with ACT_OPT_FINAL, so a yield is refused
and the caller receives an HTTP_RULE_RES_ERROR instead of being left waiting
forever.

The server side was missing: when the backend connector reports an error
while an http-response action (e.g. send-spoe-group) is yielding, the action
kept waiting for a wakeup that would only ever come from the server it just
lost, and the response was stuck in the channel until the client timed out.

Add the missing server-side condition: an SC_FL_ERROR on the backend
connector also sets ACT_OPT_FINAL, so http-response actions get a final
chance to conclude when the server dies. Combined with the previous commit,
the "server answered early and reset its stream while the action was
pending" case from github issue #3559 now lets the action conclude with an
error instead of hanging the response.

This patch should be backported to all supported versions.
src/http_ana.c