aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0003-reopen-syslog-socket-on-error.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/musl/0003-reopen-syslog-socket-on-error.patch')
-rw-r--r--main/musl/0003-reopen-syslog-socket-on-error.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/main/musl/0003-reopen-syslog-socket-on-error.patch b/main/musl/0003-reopen-syslog-socket-on-error.patch
new file mode 100644
index 0000000000..d89d6be22a
--- /dev/null
+++ b/main/musl/0003-reopen-syslog-socket-on-error.patch
@@ -0,0 +1,42 @@
+From 324dbe39c6941f9d37d438cc528a3dedbc89c636 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Tue, 7 Jul 2015 10:35:50 +0300
+Subject: [PATCH] reopen syslog socket on error
+
+---
+ src/misc/syslog.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/src/misc/syslog.c b/src/misc/syslog.c
+index e026f9b..f98944f 100644
+--- a/src/misc/syslog.c
++++ b/src/misc/syslog.c
+@@ -56,6 +56,14 @@ static void __openlog()
+ log_fd = fd;
+ }
+
++static int __reopenlog()
++{
++ close(log_fd);
++ log_fd = -1;
++ __openlog();
++ return log_fd;
++}
++
+ void openlog(const char *ident, int opt, int facility)
+ {
+ int cs;
+@@ -107,7 +115,9 @@ static void _vsyslog(int priority, const char *message, va_list ap)
+ if (l2 >= sizeof buf - l) l = sizeof buf - 1;
+ else l += l2;
+ if (buf[l-1] != '\n') buf[l++] = '\n';
+- if (send(log_fd, buf, l, 0) < 0 && (log_opt & LOG_CONS)) {
++ if (send(log_fd, buf, l, 0) < 0
++ && (__reopenlog() < 0 || send(log_fd, buf, l, 0) < 0)
++ && (log_opt & LOG_CONS)) {
+ fd = open("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC);
+ if (fd >= 0) {
+ dprintf(fd, "%.*s", l-hlen, buf+hlen);
+--
+2.4.5
+