From: Christopher Faulet Date: Tue, 11 Apr 2023 05:56:50 +0000 (+0200) Subject: BUG/MEDIUM: log: Eat output data when waiting for appctx shutdown X-Git-Tag: v2.8-dev8~195 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=211452ef9af93d7eb25c9a339ced766ad51acd96;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: log: Eat output data when waiting for appctx shutdown When the log 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. --- diff --git a/src/log.c b/src/log.c index 6ba601d42c..65b3ce1aff 100644 --- a/src/log.c +++ b/src/log.c @@ -3577,8 +3577,10 @@ static void syslog_io_handler(struct appctx *appctx) char *message; size_t size; - 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)))) { + co_skip(sc_oc(sc), co_data(sc_oc(sc))); goto out; + } max_accept = l->bind_conf->maxaccept ? l->bind_conf->maxaccept : 1; while (co_data(sc_oc(sc))) {