mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-21 21:12:47 +00:00
MINOR: log: Keep the ref when a log server is copied to avoid duplicate entries
With "log global" line, the global list of loggers are copied into the proxy's struct. The list coming from the default section is also copied when a frontend or a backend section is parsed. So it is possible to have duplicate entries in the proxy's list. For instance, with this following config, all messages will be logged twice: global log 127.0.0.1 local0 debug daemon defaults mode http log global option httplog frontend front-http log global bind *:8888 default_backend back-http backend back-http server www 127.0.0.1:8000
This commit is contained in:
parent
4b0b79dd56
commit
28ac099907
@ -175,6 +175,7 @@ struct logsrv {
|
||||
int level;
|
||||
int minlvl;
|
||||
int maxlen;
|
||||
struct logsrv *ref;
|
||||
};
|
||||
|
||||
#endif /* _TYPES_LOG_H */
|
||||
|
@ -2836,6 +2836,7 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm)
|
||||
list_for_each_entry(tmplogsrv, &defproxy.logsrvs, list) {
|
||||
struct logsrv *node = malloc(sizeof(*node));
|
||||
memcpy(node, tmplogsrv, sizeof(struct logsrv));
|
||||
node->ref = tmplogsrv->ref;
|
||||
LIST_INIT(&node->list);
|
||||
LIST_ADDQ(&curproxy->logsrvs, &node->list);
|
||||
}
|
||||
|
13
src/log.c
13
src/log.c
@ -720,10 +720,21 @@ int parse_logsrv(char **args, struct list *logsrvs, int do_del, char **err)
|
||||
goto error;
|
||||
}
|
||||
list_for_each_entry(logsrv, &global.logsrvs, list) {
|
||||
struct logsrv *node = malloc(sizeof(*node));
|
||||
struct logsrv *node;
|
||||
|
||||
list_for_each_entry(node, logsrvs, list) {
|
||||
if (node->ref == logsrv)
|
||||
goto skip_logsrv;
|
||||
}
|
||||
|
||||
node = malloc(sizeof(*node));
|
||||
memcpy(node, logsrv, sizeof(struct logsrv));
|
||||
node->ref = logsrv;
|
||||
LIST_INIT(&node->list);
|
||||
LIST_ADDQ(logsrvs, &node->list);
|
||||
|
||||
skip_logsrv:
|
||||
continue;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user