summaryrefslogtreecommitdiff
path: root/main/logger.c
diff options
context:
space:
mode:
authorWalter Doekes <walter+asterisk@wjd.nu>2016-03-24 11:48:32 +0100
committerJoshua Colp <jcolp@digium.com>2016-03-24 06:34:47 -0500
commit87c9ab97ea8038b3ef694d027bce26f29ea24777 (patch)
tree5581845c9a8ad1d7a70180c3cf7d6667bd3bc3f3 /main/logger.c
parentd7ee89b49950522f78afaca70d194f868f59321c (diff)
core/logging: Fix broken syslog levels on older glibc.
The fix to ASTERISK-25407 introduced the usage of LOG_MAKEPRI. However this macro is broken in older glibc (< 2.17); it would left-shift the facility a second time, causing the resultant priority to become invalid. The syslog manpage mentions nothing about LOG_MAKEPRI and suggests this: The priority argument is formed by ORing the facility and the level values [...]. ASTERISK-25510 #close Reported by: Michael Newton Change-Id: Ia89debe7fac5ad090c7ef595c0707f31bb1e3d03
Diffstat (limited to 'main/logger.c')
-rw-r--r--main/logger.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/main/logger.c b/main/logger.c
index 13f6de890..42a1c7000 100644
--- a/main/logger.c
+++ b/main/logger.c
@@ -1514,7 +1514,8 @@ static void logger_print_normal(struct logmsg *logmsg)
continue;
}
- syslog_level = LOG_MAKEPRI(chan->facility, syslog_level);
+ /* Don't use LOG_MAKEPRI because it's broken in glibc<2.17 */
+ syslog_level = chan->facility | syslog_level; /* LOG_MAKEPRI(chan->facility, syslog_level); */
if (!chan->formatter.format_log(chan, logmsg, buf, BUFSIZ)) {
syslog(syslog_level, "%s", buf);
}