From: Christopher Faulet Date: Tue, 13 May 2025 15:45:18 +0000 (+0200) Subject: BUG/MINOR: spoe: Don't report error on applet release if filter is in DONE state X-Git-Tag: v3.2-dev16~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1cd30c998bce72166855d6b83a8e6865c33095a1;p=thirdparty%2Fhaproxy.git BUG/MINOR: spoe: Don't report error on applet release if filter is in DONE state When the SPOE applet was released, if a SPOE filter context was still attached to it, an error was reported to the filter. However, there is no reason to report an error if the ACK message was already received. Because of this bug, if the ACK message is received and the SPOE connection is immediately closed, this prevents the ACK message to be processed. This patch should be backported to 3.1. --- diff --git a/src/flt_spoe.c b/src/flt_spoe.c index cec31a855..6810008f2 100644 --- a/src/flt_spoe.c +++ b/src/flt_spoe.c @@ -441,8 +441,10 @@ static void spoe_release_appctx(struct appctx *appctx) if (spoe_appctx->spoe_ctx) { /* Report an error to stream */ spoe_appctx->spoe_ctx->spoe_appctx = NULL; - spoe_appctx->spoe_ctx->state = SPOE_CTX_ST_ERROR; - spoe_appctx->spoe_ctx->status_code = (spoe_appctx->status_code + 0x100); + if (spoe_appctx->spoe_ctx->state != SPOE_CTX_ST_DONE) { + spoe_appctx->spoe_ctx->state = SPOE_CTX_ST_ERROR; + spoe_appctx->spoe_ctx->status_code = (spoe_appctx->status_code + 0x100); + } task_wakeup(spoe_appctx->spoe_ctx->strm->task, TASK_WOKEN_MSG); }