]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: stats: Use the sedesc to report and detect end of processing
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 31 Mar 2023 09:28:22 +0000 (11:28 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 5 Apr 2023 06:57:06 +0000 (08:57 +0200)
Just like for other applets, we now use the SE descriptor instead of the
channel to report error and end-of-stream.

src/stats.c

index 2bc471c6e12f0af0f9acaa2c69a6c232c8f61bb9..5ce61ee664e6e984e8ae4f29af8d914212c45136 100644 (file)
@@ -4441,7 +4441,7 @@ static void http_stats_io_handler(struct appctx *appctx)
 
        res_htx = htx_from_buf(&res->buf);
 
-       if (unlikely(sc->state == SC_ST_DIS || sc->state == SC_ST_CLO))
+       if (unlikely(se_fl_test(appctx->sedesc, (SE_FL_EOS|SE_FL_ERROR|SE_FL_SHR|SE_FL_SHW))))
                goto out;
 
        /* Check if the input buffer is available. */
@@ -4450,10 +4450,6 @@ static void http_stats_io_handler(struct appctx *appctx)
                goto out;
        }
 
-       /* check that the output is not closed */
-       if (res->flags & (CF_SHUTW|CF_SHUTW_NOW|CF_SHUTR))
-               appctx->st0 = STAT_HTTP_END;
-
        /* all states are processed in sequence */
        if (appctx->st0 == STAT_HTTP_HEAD) {
                if (stats_send_http_headers(sc, res_htx)) {
@@ -4505,8 +4501,7 @@ static void http_stats_io_handler(struct appctx *appctx)
        }
 
        if (appctx->st0 == STAT_HTTP_END) {
-               if (!(res->flags & CF_SHUTR))
-                       sc_shutr(sc);
+               se_fl_set(appctx->sedesc, SE_FL_EOS);
                applet_will_consume(appctx);
        }