diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2013-04-17 11:10:51 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2013-04-17 11:10:51 +0200 |
commit | 3d914eb90cd7aed1342a01c5993f8c2de4cd1283 (patch) | |
tree | 46046d3136b5ca4fd864813b36b62d330a9c9559 /plugins/imkmsg/kmsg.c | |
parent | 39b35a32b4a45ccb6506e15b02780c30ca8c3973 (diff) | |
parent | 9d59080b4a43ca6d19bece357cb1132374a2116a (diff) | |
download | rsyslog-3d914eb90cd7aed1342a01c5993f8c2de4cd1283.tar.gz rsyslog-3d914eb90cd7aed1342a01c5993f8c2de4cd1283.tar.bz2 rsyslog-3d914eb90cd7aed1342a01c5993f8c2de4cd1283.zip |
Merge branch 'master' into master-imjournal
Diffstat (limited to 'plugins/imkmsg/kmsg.c')
-rw-r--r-- | plugins/imkmsg/kmsg.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/plugins/imkmsg/kmsg.c b/plugins/imkmsg/kmsg.c index b771d68a..f1815f25 100644 --- a/plugins/imkmsg/kmsg.c +++ b/plugins/imkmsg/kmsg.c @@ -89,6 +89,10 @@ submitSyslog(uchar *buf) for (; isdigit(*buf); buf++) { timestamp += (timestamp * 10) + (*buf - '0'); } + + while (*buf != ';') { + buf++; /* skip everything till the first ; */ + } buf++; /* skip ; */ /* get message */ @@ -103,7 +107,7 @@ submitSyslog(uchar *buf) if (*buf != '\0') /* message has appended properties, skip \n */ buf++; - while (strlen((char *)buf)) { + while (*buf) { /* get name of the property */ buf++; /* skip ' ' */ offs = 0; @@ -174,18 +178,22 @@ static void readkmsg(void) { int i; - uchar pRcv[8096+1]; + uchar pRcv[8192+1]; char errmsg[2048]; for (;;) { dbgprintf("imkmsg waiting for kernel log line\n"); /* every read() from the opened device node receives one record of the printk buffer */ - i = read(fklog, pRcv, 8096); + i = read(fklog, pRcv, 8192); if (i > 0) { /* successful read of message of nonzero length */ pRcv[i] = '\0'; + } else if (i == -EPIPE) { + imkmsgLogIntMsg(LOG_WARNING, + "imkmsg: some messages in circular buffer got overwritten"); + continue; } else { /* something went wrong - error or zero length message */ if (i < 0 && errno != EINTR && errno != EAGAIN) { |