diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2009-06-16 08:46:45 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2009-06-16 08:46:45 +0200 |
commit | 015d17ca70e81ad998e32cdfeed3cd925fd7dedc (patch) | |
tree | 9e4a547346b72709551b2122f67a158812330fe0 /runtime/parser.c | |
parent | e893a5916473c45d6b90dc2401637fe713133291 (diff) | |
download | rsyslog-015d17ca70e81ad998e32cdfeed3cd925fd7dedc.tar.gz rsyslog-015d17ca70e81ad998e32cdfeed3cd925fd7dedc.tar.xz rsyslog-015d17ca70e81ad998e32cdfeed3cd925fd7dedc.zip |
some performance optimizations
- saved gettimeofday() calls in imtcp (and increased reception buffer)
- somewhat optimized stringbuf.c
- some other optimizations
Diffstat (limited to 'runtime/parser.c')
-rw-r--r-- | runtime/parser.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/runtime/parser.c b/runtime/parser.c index 212d40f3..64e03094 100644 --- a/runtime/parser.c +++ b/runtime/parser.c @@ -191,6 +191,23 @@ sanitizeMessage(msg_t *pMsg) lenMsg--; } + /* it is much quicker to sweep over the message and see if it actually + * needs sanitation than to do the sanitation in any case. So we first do + * this and terminate when it is not needed - which is expectedly the case + * for the vast majority of messages. -- rgerhards, 2009-06-15 + */ + int bNeedSanitize = 0; + for(iSrc = 0 ; iSrc < lenMsg ; iSrc++) { + if(pszMsg[iSrc] < 32) { + if(pszMsg[iSrc] == '\0' || bEscapeCCOnRcv) { + bNeedSanitize = 1; + break; + } + } + } + if(bNeedSanitize == 0) + FINALIZE; + /* now copy over the message and sanitize it */ /* TODO: can we get cheaper memory alloc? {alloca()?}*/ iMaxLine = glbl.GetMaxLine(); |