]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: spoe: Fix condition to abort processing on client abort
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 18 Mar 2026 09:53:13 +0000 (10:53 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 18 Mar 2026 10:24:49 +0000 (11:24 +0100)
The test to detect client aborts in the SPOE, introduced by commit b3be3b94a
("BUG/MEDIUM: spoe: Properly abort processing on client abort"), was no
correct. Producer flags must not be tested. Only the frontend SC must be
tested when the abortonclose option is set.

Because of this bug, when a client aborted, the SPOE processing was aborted
too, regardless the abortonclose option.

This patch must be backpoeted with the commit above, so as far as 3.1.

src/flt_spoe.c

index 5d8f23dba2d868029bdd786275d20020944f943b..e1ce537deb1eadef4b82f3ac53610f0f87e73153 100644 (file)
@@ -1116,8 +1116,7 @@ static int spoe_process_event(struct stream *s, struct spoe_context *ctx,
                struct channel *chn = (dir == SMP_OPT_DIR_REQ) ? &s->req : &s->res;
 
                if ((s->scf->flags & SC_FL_ERROR) ||
-                   ((s->scf->flags & (SC_FL_EOS|SC_FL_ABRT_DONE)) && proxy_abrt_close_def(s->be, 1)) ||
-                   (chn_prod(chn)->flags & (SC_FL_ERROR|SC_FL_EOS|SC_FL_ABRT_DONE))) {
+                   ((s->scf->flags & (SC_FL_EOS|SC_FL_ABRT_DONE)) && proxy_abrt_close_def(s->be, 1))) {
                        ctx->status_code = SPOE_CTX_ERR_INTERRUPT;
                        spoe_stop_processing(agent, ctx);
                        spoe_handle_processing_error(s, agent, ctx, dir);