Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Sat,  4 Jul 2015 19:58:04 +0300
From: Timo Teräs <timo.teras@....fi>
To: musl@...ts.openwall.com
Cc: Timo Teräs <timo.teras@....fi>
Subject: [PATCH] close syslog socket on error to recreate it later

if syslogd is restarted, the socket is left in unconnected state
and all logging will cease
---
 src/misc/syslog.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/misc/syslog.c b/src/misc/syslog.c
index e026f9b..c329956 100644
--- a/src/misc/syslog.c
+++ b/src/misc/syslog.c
@@ -107,11 +107,15 @@ 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)) {
-			fd = open("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC);
-			if (fd >= 0) {
-				dprintf(fd, "%.*s", l-hlen, buf+hlen);
-				close(fd);
+		if (send(log_fd, buf, l, 0) < 0) {
+			close(log_fd);
+			log_fd = -1;
+			if (log_opt & LOG_CONS)) {
+				fd = open("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC);
+				if (fd >= 0) {
+					dprintf(fd, "%.*s", l-hlen, buf+hlen);
+					close(fd);
+				}
 			}
 		}
 		if (log_opt & LOG_PERROR) dprintf(2, "%.*s", l-hlen, buf+hlen);
-- 
2.4.5

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.