From: Christopher Faulet Date: Wed, 5 Oct 2022 09:01:56 +0000 (+0200) Subject: MEDIUM: mux-pt: Don't always set a final error on SE on the sending path X-Git-Tag: v2.7-dev9~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b65af26e1;p=thirdparty%2Fhaproxy.git MEDIUM: mux-pt: Don't always set a final error on SE on the sending path SE_FL_ERROR must be set on the SE descriptor only if EOS was already reported. So call se_fl_set_error() function to properly the ERR_PENDING/ERROR flags. It is not really a bug because the mux-pt is really simple. But it is better to do it now the right way. --- diff --git a/src/mux_pt.c b/src/mux_pt.c index baa67cea45..86a1f2362e 100644 --- a/src/mux_pt.c +++ b/src/mux_pt.c @@ -557,7 +557,7 @@ static size_t mux_pt_snd_buf(struct stconn *sc, struct buffer *buf, size_t count b_del(buf, ret); if (conn->flags & CO_FL_ERROR) { - se_fl_set(ctx->sd, SE_FL_ERROR); + se_fl_set_error(ctx->sd); TRACE_DEVEL("error on connection", PT_EV_TX_DATA|PT_EV_CONN_ERR, conn, sc); } @@ -625,7 +625,7 @@ static int mux_pt_snd_pipe(struct stconn *sc, struct pipe *pipe) ret = conn->xprt->snd_pipe(conn, conn->xprt_ctx, pipe); if (conn->flags & CO_FL_ERROR) { - se_fl_set(ctx->sd, SE_FL_ERROR); + se_fl_set_error(ctx->sd); TRACE_DEVEL("error on connection", PT_EV_TX_DATA|PT_EV_CONN_ERR, conn, sc); }