diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2013-03-22 09:33:33 +0100 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2013-03-22 09:33:33 +0100 |
commit | 223439934c20f38bc00ec5287124737932d33ddb (patch) | |
tree | 83f1b2b82271574ddd503ab1c43049b86817f839 /plugins/imkmsg/kmsg.c | |
parent | 785e0c3c8b00614b6f780f902442025f4558a160 (diff) | |
parent | 906ed9df906fe3a52b042929130e6fc9a00b53a8 (diff) | |
download | rsyslog-223439934c20f38bc00ec5287124737932d33ddb.tar.gz rsyslog-223439934c20f38bc00ec5287124737932d33ddb.tar.bz2 rsyslog-223439934c20f38bc00ec5287124737932d33ddb.zip |
Merge branch 'master' into master-gt
Conflicts:
configure.ac
runtime/rsyslog.h
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) { |