mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 07:37:02 +02:00
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.
This commit is contained in:
parent
60837d340c
commit
c97406f790
@ -26,6 +26,7 @@
|
||||
#include <haproxy/sample.h>
|
||||
#include <haproxy/server-t.h>
|
||||
#include <haproxy/session.h>
|
||||
#include <haproxy/sink.h>
|
||||
#include <haproxy/tools.h>
|
||||
|
||||
|
||||
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user