BUG/MEDIUM: http-client: Eat output data when waiting for appctx shutdown

When the http-client applet is executed while a shut is pending, the
remaining output data must always be consumed. Otherwise, this can prevent
the stream to exit, leading to a spinning loop on the applet.

It is 2.8-specific. No backport needed.
This commit is contained in:
Christopher Faulet 2023-04-11 07:38:34 +02:00
parent 1fb97e47f0
commit 1901c1bf5a

View File

@ -700,9 +700,14 @@ static void httpclient_applet_io_handler(struct appctx *appctx)
uint32_t sz;
int ret;
if (unlikely(se_fl_test(appctx->sedesc, (SE_FL_EOS|SE_FL_ERROR|SE_FL_SHR|SE_FL_SHW))))
if (unlikely(se_fl_test(appctx->sedesc, (SE_FL_EOS|SE_FL_ERROR|SE_FL_SHR|SE_FL_SHW)))) {
if (co_data(res)) {
htx = htx_from_buf(&res->buf);
co_htx_skip(res, htx, co_data(res));
htx_to_buf(htx, &res->buf);
}
goto out;
}
/* The IO handler could be called after the release, so we need to
* check if hc is still there to run the IO handler */
if (!hc)