MEDIUM: promex: Use the sedesc to report and detect end of processing
Just like for other applets, we now use the SE descriptor instead of the
channel to report error and end-of-stream.
diff --git a/addons/promex/service-prometheus.c b/addons/promex/service-prometheus.c
index bc88a7b..d03399c 100644
--- a/addons/promex/service-prometheus.c
+++ b/addons/promex/service-prometheus.c
@@ -1486,7 +1486,6 @@
memcpy(res->buf.area, b_head(err), b_data(err));
res_htx = htx_from_buf(&res->buf);
channel_add_input(res, res_htx->data);
- appctx->st0 = PROMEX_ST_END;
return -1;
}
@@ -1539,7 +1538,8 @@
int ret;
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. */
@@ -1596,9 +1596,7 @@
__fallthrough;
case PROMEX_ST_END:
- if (!(res->flags & CF_SHUTR)) {
- sc_shutr(sc);
- }
+ se_fl_set(appctx->sedesc, SE_FL_EOS);
}
out:
@@ -1612,8 +1610,7 @@
return;
error:
- sc_shutr(sc);
- sc_shutw(sc);
+ se_fl_set(appctx->sedesc, SE_FL_ERROR);
goto out;
}