]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: flt-spoe: Report end of input immediately after applet init
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 4 Feb 2025 09:46:28 +0000 (10:46 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 6 Feb 2025 10:19:32 +0000 (11:19 +0100)
The SPOE applet forwards the message that must be sent to agent during its
init stage. So just after it is created. When it is performed, the end of
input must be reported because no more data will be forwarded. However, it
was performed after receiving the ACK response. It is harmless, but there is
no reason to delay the EOI. It is now fixed.

This patch must be backported to 3.1.

src/flt_spoe.c

index bc1f1042bdb32a1a61eb497b8aaab6d7d43b7217..1e9fd8a6807679d518b4f4f2bff67ed887409f53 100644 (file)
@@ -395,6 +395,9 @@ static int spoe_init_appctx(struct appctx *appctx)
        s->scf->flags |= SC_FL_NOHALF;
        s->parent = spoe_appctx->spoe_ctx->strm;
 
+       /* The frame was forwarded to the SPOP mux, set EOI now */
+       applet_set_eoi(appctx);
+
        appctx->st0 = SPOE_APPCTX_ST_WAITING_ACK;
        appctx_wakeup(appctx);
        return 0;
@@ -511,8 +514,6 @@ static void spoe_handle_appctx(struct appctx *appctx)
                case SPOE_APPCTX_ST_EXIT:
                        if (SPOE_APPCTX(appctx)->status_code != SPOP_ERR_NONE)
                                applet_set_error(appctx);
-                       else
-                               applet_set_eoi(appctx);
                        if (!SPOE_APPCTX(appctx)->spoe_ctx) {
                                appctx->st0 = SPOE_APPCTX_ST_END;
                                applet_set_eos(appctx);