From c97406f7907f545a9a5645d81da56d79b5043f80 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Mon, 22 Jun 2020 11:07:18 +0200 Subject: [PATCH] BUG/MEDIUM: fcgi-app: Resolve the sink if a fcgi-app logs in a ring buffer If a fcgi application is configured to send its logs to a ring buffer, the corresponding sink must be resolved during the configuration post parsing. Otherwise, the sink is undefined when a log message is emitted, crashing HAProxy. No need to backport. --- src/fcgi-app.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/fcgi-app.c b/src/fcgi-app.c index 964cc7d3f..3f315a6cf 100644 --- a/src/fcgi-app.c +++ b/src/fcgi-app.c @@ -26,6 +26,7 @@ #include #include #include +#include #include @@ -646,6 +647,7 @@ static int cfg_fcgi_apps_postparser() struct fcgi_app *curapp; struct proxy *px; struct server *srv; + struct logsrv *logsrv; int err_code = 0; for (px = proxies_list; px; px = px->next) { @@ -694,6 +696,19 @@ static int cfg_fcgi_apps_postparser() } curapp->maxreqs = 1; } + + list_for_each_entry(logsrv, &curapp->logsrvs, list) { + if (logsrv->type == LOG_TARGET_BUFFER) { + struct sink *sink = sink_find(logsrv->ring_name); + + if (!sink || sink->type != SINK_TYPE_BUFFER) { + ha_alert("config : fcgi-app '%s' : log server uses unkown ring named '%s'.\n", + curapp->name, logsrv->ring_name); + err_code |= ERR_ALERT | ERR_FATAL; + } + logsrv->sink = sink; + } + } } end: