From afef4f3fffe909084c18fb37d9d68ed341fc313d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 30 Jan 2006 16:09:24 +0000 Subject: [PATCH] The syslog_daemon now ignores zero length messages, and the kernel's syslog mechanism doesn't send them out any longer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16153 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/syslog_daemon/SyslogDaemon.cpp | 5 +++++ src/servers/syslog_daemon/syslog_output.cpp | 2 ++ src/system/kernel/debug/debug.c | 6 ++++++ 3 files changed, 13 insertions(+) diff --git a/src/servers/syslog_daemon/SyslogDaemon.cpp b/src/servers/syslog_daemon/SyslogDaemon.cpp index b6e13622a5..e569d28e5a 100644 --- a/src/servers/syslog_daemon/SyslogDaemon.cpp +++ b/src/servers/syslog_daemon/SyslogDaemon.cpp @@ -138,6 +138,11 @@ SyslogDaemon::Daemon() // add terminating null byte message.message[bytesRead - sizeof(syslog_message)] = '\0'; + if (!message.message[0]) { + // ignore empty messages + continue; + } + fHandlerLock.Lock(); for (int32 i = fHandlers.CountItems(); i-- > 0;) { diff --git a/src/servers/syslog_daemon/syslog_output.cpp b/src/servers/syslog_daemon/syslog_output.cpp index 1c3d1faa32..e76c18cc94 100644 --- a/src/servers/syslog_daemon/syslog_output.cpp +++ b/src/servers/syslog_daemon/syslog_output.cpp @@ -164,6 +164,8 @@ syslog_output(syslog_message &message) } else { length = strlcpy(buffer + headerLength, message.message + pos, sizeof(buffer) - headerLength); + if (length == 0) + break; } length += headerLength; diff --git a/src/system/kernel/debug/debug.c b/src/system/kernel/debug/debug.c index 512b9c2008..12f17d9349 100644 --- a/src/system/kernel/debug/debug.c +++ b/src/system/kernel/debug/debug.c @@ -431,6 +431,12 @@ syslog_sender(void *data) restore_interrupts(state); } + if (length == 0) { + // the buffer we came here for might have been sent already + bufferPending = false; + continue; + } + error = write_port_etc(port, SYSLOG_MESSAGE, sSyslogMessage, sizeof(struct syslog_message) + length, B_RELATIVE_TIMEOUT, 0);