summaryrefslogtreecommitdiffstats
path: root/runtime/parser.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2009-06-16 08:46:45 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2009-06-16 08:46:45 +0200
commit015d17ca70e81ad998e32cdfeed3cd925fd7dedc (patch)
tree9e4a547346b72709551b2122f67a158812330fe0 /runtime/parser.c
parente893a5916473c45d6b90dc2401637fe713133291 (diff)
downloadrsyslog-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.c17
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();