summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2009-02-10 01:52:22 +0100
committerMichael Biebl <biebl@debian.org>2009-02-10 01:52:22 +0100
commitc84d74c258d54713cadf8dfbeff10fcb4d91624f (patch)
tree31800ce67d76cf7254cb924cb8d08193040e83c5
parenta9a14cc4ca04738ea56eee92c98a63829bdbd438 (diff)
downloadrsyslog-c84d74c258d54713cadf8dfbeff10fcb4d91624f.tar.gz
Imported Upstream version 3.20.4upstream/3.20.4
-rw-r--r--ChangeLog10
-rw-r--r--Makefile.in2
-rwxr-xr-xconfigure68
-rw-r--r--configure.ac6
-rw-r--r--doc/Makefile.am3
-rw-r--r--doc/Makefile.in5
-rw-r--r--doc/manual.html2
-rw-r--r--doc/ommysql.html46
-rw-r--r--doc/omrelp.html4
-rw-r--r--doc/status.html55
-rw-r--r--doc/syslog_parsing.html196
-rw-r--r--plugins/im3195/Makefile.in2
-rw-r--r--plugins/imfile/Makefile.in2
-rw-r--r--plugins/imgssapi/Makefile.in2
-rw-r--r--plugins/imklog/Makefile.in2
-rw-r--r--plugins/immark/Makefile.in2
-rw-r--r--plugins/imrelp/Makefile.in2
-rw-r--r--plugins/imtcp/Makefile.in2
-rw-r--r--plugins/imtemplate/Makefile.in2
-rw-r--r--plugins/imudp/Makefile.in2
-rw-r--r--plugins/imuxsock/Makefile.in2
-rw-r--r--plugins/omgssapi/Makefile.in2
-rw-r--r--plugins/omlibdbi/Makefile.in2
-rw-r--r--plugins/ommail/Makefile.in2
-rw-r--r--plugins/ommysql/Makefile.in2
-rw-r--r--plugins/ompgsql/Makefile.in2
-rw-r--r--plugins/omrelp/Makefile.in2
-rw-r--r--plugins/omsnmp/Makefile.in2
-rw-r--r--plugins/omtesting/Makefile.in2
-rw-r--r--runtime/Makefile.in2
-rw-r--r--runtime/msg.c26
-rw-r--r--runtime/msg.h1
-rw-r--r--tests/Makefile.in2
-rw-r--r--tools/Makefile.in2
-rw-r--r--tools/syslogd.c2
35 files changed, 309 insertions, 159 deletions
diff --git a/ChangeLog b/ChangeLog
index bccb1f8..880f3c7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,14 @@
---------------------------------------------------------------------------
+Version 3.20.4 [v3-stable] (rgerhards), 2009-02-09
+- bugfix: inconsistent use of mutex/atomic operations could cause segfault
+ details are too many, for full analysis see blog post at:
+ http://blog.gerhards.net/2009/01/rsyslog-data-race-analysis.html
+- bugfix: invalid ./configure settings for RFC3195
+ thanks to Michael Biebl for the patch
+- bugfix: invalid mutex access in msg.c
+- doc bugfix: dist tarball missed 2 files, had one extra file that no
+ longer belongs into it. Thanks to Michael Biebl for pointing this out.
+---------------------------------------------------------------------------
Version 3.20.3 [v3-stable] (rgerhards), 2009-01-19
- doc bugfix: v3-compatiblity document had typo in config directive
thanks to Andrej for reporting this
diff --git a/Makefile.in b/Makefile.in
index 10a7cff..60b8eb2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -211,8 +211,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/configure b/configure
index ba72056..187c682 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for rsyslog 3.20.3.
+# Generated by GNU Autoconf 2.63 for rsyslog 3.20.4.
#
# Report bugs to <rsyslog@lists.adiscon.com>.
#
@@ -750,8 +750,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='rsyslog'
PACKAGE_TARNAME='rsyslog'
-PACKAGE_VERSION='3.20.3'
-PACKAGE_STRING='rsyslog 3.20.3'
+PACKAGE_VERSION='3.20.4'
+PACKAGE_STRING='rsyslog 3.20.4'
PACKAGE_BUGREPORT='rsyslog@lists.adiscon.com'
ac_unique_file="ChangeLog"
@@ -796,8 +796,6 @@ ENABLE_IMTEMPLATE_FALSE
ENABLE_IMTEMPLATE_TRUE
ENABLE_IMFILE_FALSE
ENABLE_IMFILE_TRUE
-RFC3195_LIBS
-RFC3195_CFLAGS
ENABLE_RFC3195_FALSE
ENABLE_RFC3195_TRUE
LIBLOGGING_LIBS
@@ -1570,7 +1568,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures rsyslog 3.20.3 to adapt to many kinds of systems.
+\`configure' configures rsyslog 3.20.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1640,7 +1638,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of rsyslog 3.20.3:";;
+ short | recursive ) echo "Configuration of rsyslog 3.20.4:";;
esac
cat <<\_ACEOF
@@ -1776,7 +1774,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-rsyslog configure 3.20.3
+rsyslog configure 3.20.4
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1790,7 +1788,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by rsyslog $as_me 3.20.3, which was
+It was created by rsyslog $as_me 3.20.4, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
@@ -2506,7 +2504,7 @@ fi
# Define the identity of the package.
PACKAGE='rsyslog'
- VERSION='3.20.3'
+ VERSION='3.20.4'
cat >>confdefs.h <<_ACEOF
@@ -6185,7 +6183,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 6188 "configure"' > conftest.$ac_ext
+ echo '#line 6186 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -8783,11 +8781,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8786: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8784: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8790: \$? = $ac_status" >&5
+ echo "$as_me:8788: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9073,11 +9071,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9076: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9074: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9080: \$? = $ac_status" >&5
+ echo "$as_me:9078: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9177,11 +9175,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9180: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9178: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9184: \$? = $ac_status" >&5
+ echo "$as_me:9182: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -11579,7 +11577,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 11582 "configure"
+#line 11580 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11679,7 +11677,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 11682 "configure"
+#line 11680 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -14088,11 +14086,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14091: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14089: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:14095: \$? = $ac_status" >&5
+ echo "$as_me:14093: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -14192,11 +14190,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14195: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14193: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:14199: \$? = $ac_status" >&5
+ echo "$as_me:14197: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -15777,11 +15775,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15780: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15778: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:15784: \$? = $ac_status" >&5
+ echo "$as_me:15782: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -15881,11 +15879,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15884: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15882: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:15888: \$? = $ac_status" >&5
+ echo "$as_me:15886: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -18098,11 +18096,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:18101: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:18099: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:18105: \$? = $ac_status" >&5
+ echo "$as_me:18103: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -18388,11 +18386,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:18391: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:18389: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:18395: \$? = $ac_status" >&5
+ echo "$as_me:18393: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -18492,11 +18490,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:18495: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:18493: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:18499: \$? = $ac_status" >&5
+ echo "$as_me:18497: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -29021,7 +29019,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by rsyslog $as_me 3.20.3, which was
+This file was extended by rsyslog $as_me 3.20.4, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -29084,7 +29082,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-rsyslog config.status 3.20.3
+rsyslog config.status 3.20.4
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/configure.ac b/configure.ac
index 7af05e4..c5bcaec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
-AC_INIT([rsyslog],[3.20.3],[rsyslog@lists.adiscon.com])
+AC_INIT([rsyslog],[3.20.4],[rsyslog@lists.adiscon.com])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([ChangeLog])
AC_CONFIG_HEADERS([config.h])
@@ -581,8 +581,8 @@ if test "x$enable_rfc3195" = "xyes"; then
PKG_CHECK_MODULES(LIBLOGGING, liblogging >= 0.7.1)
fi
AM_CONDITIONAL(ENABLE_RFC3195, test x$enable_rfc3195 = xyes)
-AC_SUBST(RFC3195_CFLAGS)
-AC_SUBST(RFC3195_LIBS)
+AC_SUBST(LIBLOGGING_CFLAGS)
+AC_SUBST(LIBLOGGING_LIBS)
# settings for the template input module; copy and modify this code
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 4f4aae1..e7ce18c 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -31,6 +31,7 @@ html_files = \
contributors.html \
dev_queue.html \
omsnmp.html \
+ ommysql.html \
omlibdbi.html \
imfile.html \
imtcp.html \
@@ -96,7 +97,7 @@ html_files = \
licensing.html \
ommail.html \
omrelp.html \
- status.html \
+ syslog_parsing.html \
troubleshoot.html \
src/classes.dia
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 86dc3d6..d24e9ff 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -103,8 +103,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -213,6 +211,7 @@ html_files = \
contributors.html \
dev_queue.html \
omsnmp.html \
+ ommysql.html \
omlibdbi.html \
imfile.html \
imtcp.html \
@@ -278,7 +277,7 @@ html_files = \
licensing.html \
ommail.html \
omrelp.html \
- status.html \
+ syslog_parsing.html \
troubleshoot.html \
src/classes.dia
diff --git a/doc/manual.html b/doc/manual.html
index 1d6f795..aa0fdb3 100644
--- a/doc/manual.html
+++ b/doc/manual.html
@@ -16,7 +16,7 @@ relay chains while at the same time being very easy to setup for the
novice user. And as we know what enterprise users really need, there is
also <a href="professional_support.html">professional
rsyslog support</a> available directly from the source!</p>
-<p><b>This documentation is for version 3.20.3 (v3-stable branch) of rsyslog.</b>
+<p><b>This documentation is for version 3.20.4 (v3-stable branch) of rsyslog.</b>
Visit the <i> <a href="http://www.rsyslog.com/doc-status.html">rsyslog status page</a></i></b> to obtain current
version information and project status.
</p><p><b>If you like rsyslog, you might
diff --git a/doc/ommysql.html b/doc/ommysql.html
new file mode 100644
index 0000000..79d913e
--- /dev/null
+++ b/doc/ommysql.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Language" content="en">
+<title>MySQL Database Output Module</title>
+</head>
+
+<body>
+<h1>MySQL Database Output Module</h1>
+<p><b>Module Name:&nbsp;&nbsp;&nbsp; ommysql</b></p>
+<p><b>Author: </b>Michael Meckelein (Initial Author) / Rainer Gerhards
+&lt;rgerhards@adiscon.com&gt;</p>
+<p><b>Description</b>:</p>
+<p>This module provides native support for logging to MySQL databases. It offers
+superior performance over the more generic <a href="omlibdbi.html">omlibdbi</a> module.
+</p>
+<p><b>Configuration Directives</b>:</p>
+<p>ommysql mostly uses the "old style" configuration, with almost everything on the
+action line itself. A few newer features are being migrated to the new style-config
+directive configuration system.
+<ul>
+<li><b>$ActionOmmysqlServerPort &lt;port&gt;</b><br>Permits to select
+a non-standard port for the MySQL server. The default is 0, which means the
+system default port is used. There is no need to specify this directive unless
+you know the server is running on a non-standard listen port.
+<li>Action parameters:
+<br><b>:ommysql:database-server,database-name,database-userid,database-password</b>
+<br>All parameters should be filled in for a successful connect.
+</ul>
+<p><b>Sample:</b></p>
+<p>The following sample writes all syslog messages to the
+database "syslog_db" on mysqlsever.example.com. The server is
+being accessed under the account of "user" with password "pwd".
+</p>
+<textarea rows="5" cols="80">$ModLoad ommysql
+$ActionOmmysqlServerPort 1234 # use non-standard port
+*.*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :ommysql:mysqlserver.example.com,syslog_db,user,pwd
+</textarea>
+<p>[<a href="rsyslog_conf.html">rsyslog.conf overview</a>]
+[<a href="manual.html">manual index</a>] [<a href="http://www.rsyslog.com/">rsyslog site</a>]</p>
+<p><font size="2">This documentation is part of the
+<a href="http://www.rsyslog.com/">rsyslog</a>
+project.<br>
+Copyright &copy; 2008 by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a> and
+<a href="http://www.adiscon.com/">Adiscon</a>.
+Released under the GNU GPL version 3 or higher.</font></p>
+</body></html>
diff --git a/doc/omrelp.html b/doc/omrelp.html
index 0952cc7..d5437a7 100644
--- a/doc/omrelp.html
+++ b/doc/omrelp.html
@@ -4,7 +4,7 @@
</head>
<body>
-<h1>RELP Output Module (omlibdbi)</h1>
+<h1>RELP Output Module (omrelp)</h1>
<p><b>Module Name:&nbsp;&nbsp;&nbsp; omrelp</b></p>
<p><b>Author: </b>Rainer Gerhards
&lt;rgerhards@adiscon.com&gt;</p>
@@ -51,4 +51,4 @@ Copyright © 2008 by <a href="http://www.gerhards.net/rainer">Rainer
Gerhards</a> and
<a href="http://www.adiscon.com/">Adiscon</a>.
Released under the GNU GPL version 3 or higher.</font></p>
-</body></html> \ No newline at end of file
+</body></html>
diff --git a/doc/status.html b/doc/status.html
deleted file mode 100644
index 90932fc..0000000
--- a/doc/status.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><title>rsyslog status page</title></head>
-<body>
-<h2>rsyslog status page</h2>
-<p>This page reflects the status as of 2008-07-15.</p>
-<h2>Current Releases</h2>
-
-<!-- no devel at this time!
-<p><b>development:</b> 3.19.9 [2008-07-07] -
-<a href="http://www.rsyslog.com/Article250.phtml">change log</a> -
-<a href="http://www.rsyslog.com/Downloads-req-viewdownloaddetails-lid-117.phtml">download</a>
--->
-
-<br><b>beta:</b> 3.19.10 [2008-07-15] -
-<a href="http://www.rsyslog.com/Article256.phtml">change log</a> -
-<a href="http://www.rsyslog.com/Downloads-req-viewdownloaddetails-lid-109.phtml">download</a></p>
-
-<p><b>v3 stable:</b> 3.18.0 [2008-07-11] - <a href="http://www.rsyslog.com/Article254.phtml">change log</a> -
-<a href="http://www.rsyslog.com/Downloads-req-viewdownloaddetails-lid-120.phtml">download</a>
-
-<br><b>v2 stable:</b> 2.0.5 [2008-05-15] - <a href="http://www.rsyslog.com/Article226.phtml">change log</a> -
-<a href="http://www.rsyslog.com/Downloads-req-viewdownloaddetails-lid-104.phtml">download</a>
-<br>v0 and v1 are deprecated and no longer supported. If you absolutely do not like to
-upgrade, you may consider purchasing a
-<a href="professional_support.html">commercial rsyslog support package</a>. Just let us point
-out that it is really not a good idea to still run a v0 version.
-
-<p><a href="v3compatibility.html">If you updgrade from version 2, be sure to read the rsyslog v3
-compatibility document.</a></p>
-<p>(<a href="version_naming.html">How are versions named?</a>)</p>
-
-<h2>Platforms</h2>
-<p>Thankfully, a number of folks have begin to build packages and
-help port rsyslog to other platforms. As such,
-<a href="http://wiki.rsyslog.com/index.php/Platforms">the
-platform list is now maintained inside the rsyslog wiki</a>.
-Platform maintainers perhaps have posted extra information there. If
-you do platform-specific work, feel free to add information to the wiki.</p>
-<p>Rsyslog is the default syslogd in Fedora 8 and above.</p>
-<h2>Additional information</h2>
-<p><b>Currently supported features are listed on the <a href="features.html">rsyslog features page</a>.</b></p>
-<ul>
-<li>The rsyslog home page is <a href="http://www.rsyslog.com">www.rsyslog.com</a>.</li>
-<li>Mailing list info can be found at <a href="http://lists.adiscon.net/mailman/listinfo/rsyslog">http://lists.adiscon.com/rsyslog</a>.</li>
-<li>The change log can be found at <a href="http://www.rsyslog.com/Topic4.phtml">
-http://www.rsyslog.com/Topic4.phtml</a>. </li>
-<li>Online documentation is available at <a href="http://www.rsyslog.com/doc">http://www.rsyslog.com/doc</a>.</li>
-<li>You may also find <a href="http://rgerhards.blogspot.com/">Rainer's blog</a>
-an interesting read.</li>
-</ul>
-<p>The project was initiated in 2003 and seriouosly begun in 2004 by
-<a href="http://www.gerhards.net/rainer">Rainer Gerhards</a>
-and is currently being maintained by him. See the <a href="history.html">history page</a> for more
-background information.</p>
-</body></html>
diff --git a/doc/syslog_parsing.html b/doc/syslog_parsing.html
new file mode 100644
index 0000000..57da665
--- /dev/null
+++ b/doc/syslog_parsing.html
@@ -0,0 +1,196 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><title>syslog parsing in rsyslog</title>
+</head>
+<body>
+<h1>syslog parsing in rsyslog</h1>
+<p><small><i>Written by <a href="http://www.gerhards.net/rainer">Rainer Gerhards</a>
+(2008-09-23)</i></small></p>
+<p><b>We regularly receive messages asking why <a href="http://www.rsyslog.com">rsyslog</a>
+parses this or that message incorrectly.</b> Of course, it turns out that rsyslog does
+the right thing, but the message sender does not. And also of course, this is not even
+of the slightest help to the end user experiencing the problem ;). So I thought I write this
+paper. It describes the problem source and shows potential solutions (aha!).
+<h2>Syslog Standardization</h2>
+The syslog protocol has not been standardized until relatively recently.The first document "smelling" a bit
+like a standard is <a href="http://www.ietf.org/rfc/rfc3164.txt">RFC 3164</a>, which dates back
+to August 2001. The problem is that this document is no real standard. It has assigned "informational"
+status by the <a href="http://www.ietf.org">IETF</a> which means it provides some hopefully
+useful information but does not demand anything. It is impossible to "comply" to an informational
+document. This, of course, doesn't stop marketing guys from telling they comply to RFC3164 and
+it also does not stop some techs to tell you "this and that does not comply to RFC3164, so it is
+&lt;anybody else but them&gt;'s fault".
+<p>Then, there is <a href="http://www.ietf.org/rfc/rfc3195.txt">RFC3195</a>, which is
+a real standard. In it's section 3 it makes (a somewhat questionable) reference to (informational)
+RFC 3164 which may be interpreted in a way that RFC3195 standardizes the format layed out
+in RFC 3164 by virtue of referencing them. So RFC3195 seems to extend its standardization
+domain to the concepts layed out in RFC 3164 (which is why I tend to find that refrence
+questionable). In that sense, RFC3195 standardizes the format informationally described in
+RFC3164, Section 4. But it demands it only for the scope of RFC3195, which is syslog over
+BEEP - and NOT syslog over UDP. So one may argue whether or not the RFC3164 format could
+be considered a standard for any non-BEEP (including UDP) syslog, too. In the strict view
+I tend to have, it does not. Refering to the RFC3195 context usually does not help,
+because there are virtually no RFC3195 implementations available (at this time,
+I would consider this RFC a failure).
+<p>Now let's for a short moment assume that RFC3195 would somehow be able to demand
+RFC3164 format for non-BEEP syslog. So we could use RFC3164 format as a standard. But does
+that really help? Let's cite RFC 3164, right at the begining of section 4 (actually, this
+is the first sentence):
+<blockquote>
+<pre>
+ The payload of any IP packet that has a UDP destination port of 514
+ MUST be treated as a syslog message.
+<pre>
+</blockquote>
+<p>Think a bit about it: this means that whatever is send to port 514 must be considered
+a valid syslog message. No format at all is demanded. So if "this is junk" is sent to
+UDP port 514 - voila, we have a valid message (interestingly, it is no longer a syslog
+message if it is sent to port 515 ;)). You may now argue that I am overdoing. So let's
+cite RFC 3164, Section 5.4, Example 2:
+<blockquote>
+<pre>
+ Example 2
+
+ Use the BFG!
+
+ While this is a valid message, it has extraordinarily little useful
+ information.
+</pre>
+</blockquote>
+<p>As you can see, RFC3164 explicitely states that no format at all is required.
+<p>Now a side-note is due: all of this does not mean that the RFC3164 authors
+did not know what they were doing. No, right the contrary is true: RFC3164 mission
+is to describe what has been seen in practice as syslog messages and the
+conclusion is quite right that there is no common understanding on the
+message format. This is also the reason why RFC3164 is an informational document:
+it provides useful information, but does not precisely specify anything.
+<p>After all of this bashing, I now have to admit that RFC3164 has some format
+recommendations layed out in section 4. The format described has quite some
+value in it and implementors recently try to follow it. This format is usually meant
+when someone tells you that a software is "RFC3164 compliant" or expects "RFC3164 compliant messages".
+I also have to admit that rsyslog also uses this format and, in the sense outlined here,
+expects messages received to be "RFC3164 compliant" (knowingly that such a beast does not
+exist - I am simply lying here ;)).
+<p>Please note that there is some relief of the situation in reach. There is a new normative
+syslog RFC series upcoming, and it specifies a standard message format. At the time of
+this writing, the main documents are sitting in the RFC editor queue waiting for a transport
+mapping to be completed. I personally expect them to be assigned RFC numbers in 2009.
+<h2>Practical Format Requirements</h2>
+<p>From a practical point of view, the message format expected (and generated by
+default in legacy mode) is:
+<pre><code>
+&lt;PRI&gt;TIMESTAMP SP HOST SP TAG MSG(Freetext)
+</code></pre>
+<p>SP is the ASCII "space" character and the definition of the rest of the fields
+can be taken from RFC3164. Please note that there also is a lot of confusion on what
+syntax and semantics the TAG actually has. This format is called "legacy syslog" because
+it is not well specified (as you know by now) and has been "inherited from the real world".
+<p>Rsyslog offers two parsers: one for the upcoming RFC series and one for legacy format. We
+concentrate on the later. That parser applies some logic to detect missing hostnames,
+is able to handle various ways the TIMESTAMP is typically malformed. In short it applies
+a lot of guesswork in trying to figure out what a message really means. I am sure the
+guessing algorithm can be improved, and I am always trying that when I see new malformed
+messages (and there is an ample set of them...). However, this finds its limits where
+it is not possible to differentiate between two entities which could be either.
+For example, look at this message:
+<pre><code>
+&lt;144&gt;Tue Sep 23 11:40:01 taghost sample message
+</code></pre>
+<p>Does it contain a hostname? Mabye. The value "taghost" is a valid hostname. Of course, it is
+also a valid tag. If it is a hostname, the tag's value is "sample" and the msg value is "message".
+Or is the hostname missing, the tag is "taghost" and msg is "sample message"? As a human, I tend
+to say the later interpretation is correct. But that's hard to tell the message parser (and, no, I do
+not intend to apply artificial intelligence just to guess what the hostname value is...).
+<p>One approach is to configure the parser so that it never expects hostnames. This becomes problematic
+if you receive messages from multiple devices. Over time, I may implement parser conditionals,
+but this is not yet available and I am not really sure if it is needed comlexity...
+<p>Things like this, happen. Even more scary formats happen in practice. Even from mainstream
+vendors. For example, I was just asked about this message (which, btw, finally made me
+write this article here):
+<pre></code>
+"<130> [ERROR] iapp_socket_task.c 399: iappSocketTask: iappRecvPkt returned error"
+</code></pre>
+<p>If you compare it with the format RFC3164 "suggests", you'll quickly notice that
+the message is "a bit" malformed. Actually, even my human intelligence is not sufficient
+to guess if there is a TAG or not (is "[ERROR]" a tag or part of the message). I may not be
+the smartest guy, but don't expect me to program a parser that is smarter than me.
+<p>To the best of my konwledge, these vendor's device's syslog format can be configured, so it
+would proabably be a good idea to include a (sufficiently well-formed) timestamp,
+the sending hostname and (maybe?) a tag to make this message well parseable.
+I will also once again take this sample and see if we can apply some guesswork.
+For example, "[" can not be part of a well-formed TIMESTAMP, so logic can conclude
+there is not TIMESTAMP. Also, "[" can not be used inside a valid hostname, so
+logic can conclude that the message contains no hostname. Even if I implement this
+logic (which I will probably do), this is a partial solution: it is impossible to
+guess if there is a tag or not (honestly!). And, even worse, it is a solution only for
+those set of messages that can be handled by the logic described. Now consider this
+hypothetical message:
+<pre></code>
+"<130> [ERROR] host.example.net 2008-09-23 11-40-22 PST iapp_socket_task.c 399: iappSocketTask: iappRecvPkt returned error"
+</code></pre>
+<p>Obviously, it requires additional guesswork. If we iterate over all the cases, we
+can very quickly see that it is impossible to guess everything correct. In the example above
+we can not even surely tell if PST should be a timezone or some other message property.
+<p>A potential solution is to generate a parser-table based parser, but this requires
+considerable effort and also has quite some runtime overhead. I try to avoid this for
+now (but I may do it, especially if someone sponsors this work ;)). Side-note: if you want
+to be a bit scared about potential formats, you may want to have a look at my paper
+<i>&quot;<a href="http://www.monitorware.com/en/workinprogress/nature-of-syslog-data.php">On the Nature of Syslog Data</a>&quot;</i>.
+<h2>Work-Around</h2>
+<p><b>The number one work-around is to configure your devices so that they emit
+(sufficiently) well-formed messages.</b> You should by now know what these look
+like.
+<p>If that cure is not available, there are some things you can do in rsyslog to
+handle the situation. First of all, be sure to read about
+<a href="rsyslog_conf.html">rsyslog.conf format</a>
+and the <a href="property_replacer.html">property replacer and properties</a> specifically.
+You need to understand that everything is configured in rsyslog. And that the message is parsed
+into properties. There are also properties available which do not stem back directly to parsing.
+Most importantly, %fromhost% property holds the name of the system rsyslog received
+the message from. In non-relay cases, this can be used instead of hostname. In relay cases,
+there is no cure other than to either fix the orginal sender or at least one of the
+relays in front of the rsyslog instance in question. Similarly, you can use %timegenerated%
+instead of %timereported%. Timegenerated is the time the message hit rsyslog for the first
+time. For non-relayed, locally connected peers, Timegenerated should be a very close approximation
+of the actual time a message was formed at the sender (depending, of course, on potential
+internal queueing inside the sender).
+Also, you may use the
+%rawmsg% property together with the several extraction modes the property replacer supports.
+Rawmsg contains the message as it is received from the remote peer. In a sense, you can
+implement a post-parser with this method.
+<p>To use these properties, you need to define your own templates and assign them. Details
+can be found in the above-quoted documentation. Just let's do a quick example. Let's say
+you have the horrible message shown above and can not fix the sending device for
+some good reason. In rsyslog.conf, you used to say:
+<pre><code>
+*.* /var/log/somefile
+</code></pre>
+<p>Of course, things do not work out well with that ill-formed message. So you decide
+to dump the rawmsg to the file and pull the remote host and time of message generation
+from rsyslog's internal properties (which, btw, is clever, because otherwise there is no
+indication of these two properties...). So you need to define a template for that and
+make sure the template is used with your file logging action. This is how it may look:
+<pre><code>
+$template, MalfromedMsgFormater,"%timegenerated% %fromhost% %rawmsg:::drop-last-lf%\n"
+*.* /var/log/somefile;MalformedMsgFormatter
+</code></pre>
+<p>This will make your log much nicer, but not look perfect. Experiment a bit
+with the available properties and replacer extraction options to fine-tune it
+to your needs.
+<h2>Wrap-Up</h2>
+<p>Syslog message format is not sufficiently standardized. There exists a weak
+"standard" format, which is used by a good number of implementations. However, there
+exist many others, including mainstream vendor implementations, which have a
+(sometimes horribly) different format. Rsyslog tries to deal with anomalies but
+can not guess right in all instances. If possible, the sender should be configured
+to submit well-formed messages. If that is not possible, you can work around these
+issues with rsyslog's property replacer and template system.
+<p>I hope this is a useful guide. You may also have a look at the
+<a href="troubleshoot.html">rsyslog troubleshooting guide</a> for further help and places where
+to ask questions.
+<p>[<a href="manual.html">manual index</a>] [<a href="http://www.rsyslog.com/">rsyslog site</a>]</p>
+<p><font size="2">This documentation is part of the
+<a href="http://www.rsyslog.com/">rsyslog</a> project.<br>
+Copyright &copy; 2008 by <a href="http://www.gerhards.net/rainer">Rainer
+Gerhards</a> and <a href="http://www.adiscon.com/">Adiscon</a>.
+Released under the GNU GPL version 3 or higher.</font></p>
+</body></html>
diff --git a/plugins/im3195/Makefile.in b/plugins/im3195/Makefile.in
index 80ccbf7..06d8aaf 100644
--- a/plugins/im3195/Makefile.in
+++ b/plugins/im3195/Makefile.in
@@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/imfile/Makefile.in b/plugins/imfile/Makefile.in
index 0df3527..9039537 100644
--- a/plugins/imfile/Makefile.in
+++ b/plugins/imfile/Makefile.in
@@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/imgssapi/Makefile.in b/plugins/imgssapi/Makefile.in
index 5ab81d0..26f57f9 100644
--- a/plugins/imgssapi/Makefile.in
+++ b/plugins/imgssapi/Makefile.in
@@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/imklog/Makefile.in b/plugins/imklog/Makefile.in
index 4fc20ff..e0cd8bf 100644
--- a/plugins/imklog/Makefile.in
+++ b/plugins/imklog/Makefile.in
@@ -144,8 +144,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/immark/Makefile.in b/plugins/immark/Makefile.in
index 8b85037..1efd6d1 100644
--- a/plugins/immark/Makefile.in
+++ b/plugins/immark/Makefile.in
@@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/imrelp/Makefile.in b/plugins/imrelp/Makefile.in
index 0c29cf5..dc3c3f3 100644
--- a/plugins/imrelp/Makefile.in
+++ b/plugins/imrelp/Makefile.in
@@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/imtcp/Makefile.in b/plugins/imtcp/Makefile.in
index edb463f..2fd148b 100644
--- a/plugins/imtcp/Makefile.in
+++ b/plugins/imtcp/Makefile.in
@@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/imtemplate/Makefile.in b/plugins/imtemplate/Makefile.in
index 22b2b91..96de010 100644
--- a/plugins/imtemplate/Makefile.in
+++ b/plugins/imtemplate/Makefile.in
@@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/imudp/Makefile.in b/plugins/imudp/Makefile.in
index 8ee7f82..4d84a07 100644
--- a/plugins/imudp/Makefile.in
+++ b/plugins/imudp/Makefile.in
@@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/imuxsock/Makefile.in b/plugins/imuxsock/Makefile.in
index 0208a6a..072d082 100644
--- a/plugins/imuxsock/Makefile.in
+++ b/plugins/imuxsock/Makefile.in
@@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/omgssapi/Makefile.in b/plugins/omgssapi/Makefile.in
index 49f42a7..2aab6d9 100644
--- a/plugins/omgssapi/Makefile.in
+++ b/plugins/omgssapi/Makefile.in
@@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/omlibdbi/Makefile.in b/plugins/omlibdbi/Makefile.in
index 3d9dd04..b159267 100644
--- a/plugins/omlibdbi/Makefile.in
+++ b/plugins/omlibdbi/Makefile.in
@@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/ommail/Makefile.in b/plugins/ommail/Makefile.in
index 0ba6fdc..e13d116 100644
--- a/plugins/ommail/Makefile.in
+++ b/plugins/ommail/Makefile.in
@@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/ommysql/Makefile.in b/plugins/ommysql/Makefile.in
index 6da734a..797d67c 100644
--- a/plugins/ommysql/Makefile.in
+++ b/plugins/ommysql/Makefile.in
@@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/ompgsql/Makefile.in b/plugins/ompgsql/Makefile.in
index dff4578..65e8b1b 100644
--- a/plugins/ompgsql/Makefile.in
+++ b/plugins/ompgsql/Makefile.in
@@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/omrelp/Makefile.in b/plugins/omrelp/Makefile.in
index fbc06e7..e13fab7 100644
--- a/plugins/omrelp/Makefile.in
+++ b/plugins/omrelp/Makefile.in
@@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/omsnmp/Makefile.in b/plugins/omsnmp/Makefile.in
index 9c0a611..461ba32 100644
--- a/plugins/omsnmp/Makefile.in
+++ b/plugins/omsnmp/Makefile.in
@@ -134,8 +134,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/plugins/omtesting/Makefile.in b/plugins/omtesting/Makefile.in
index 404692c..37516e7 100644
--- a/plugins/omtesting/Makefile.in
+++ b/plugins/omtesting/Makefile.in
@@ -133,8 +133,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/runtime/Makefile.in b/runtime/Makefile.in
index c82d6b2..b7a22f9 100644
--- a/runtime/Makefile.in
+++ b/runtime/Makefile.in
@@ -224,8 +224,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/runtime/msg.c b/runtime/msg.c
index c8dbf2c..d02b0a0 100644
--- a/runtime/msg.c
+++ b/runtime/msg.c
@@ -188,6 +188,7 @@ static void MsgPrepareEnqueueLockingCase(msg_t *pThis)
* rgerhards, 2008-07-14
*/
pthread_mutexattr_destroy(&pThis->mutAttr);
+ pThis->bDoLock = 1;
ENDfunc
}
@@ -197,14 +198,16 @@ static void MsgLockLockingCase(msg_t *pThis)
{
/* DEV debug only! dbgprintf("MsgLock(0x%lx)\n", (unsigned long) pThis); */
assert(pThis != NULL);
- pthread_mutex_lock(&pThis->mut);
+ if(pThis->bDoLock == 1) /* TODO: this is a testing hack, we should find a way with better performance! -- rgerhards, 2009-01-27 */
+ pthread_mutex_lock(&pThis->mut);
}
static void MsgUnlockLockingCase(msg_t *pThis)
{
/* DEV debug only! dbgprintf("MsgUnlock(0x%lx)\n", (unsigned long) pThis); */
assert(pThis != NULL);
- pthread_mutex_unlock(&pThis->mut);
+ if(pThis->bDoLock == 1) /* TODO: this is a testing hack, we should find a way with better performance! -- rgerhards, 2009-01-27 */
+ pthread_mutex_unlock(&pThis->mut);
}
/* delete the mutex object on message destruction (locking case)
@@ -271,11 +274,8 @@ BEGINobjDestruct(msg) /* be sure to specify the object type also in END and CODE
int currRefCount;
CODESTARTobjDestruct(msg)
/* DEV Debugging only ! dbgprintf("msgDestruct\t0x%lx, Ref now: %d\n", (unsigned long)pM, pM->iRefCount - 1); */
-# ifdef DO_HAVE_ATOMICS
- currRefCount = ATOMIC_DEC_AND_FETCH(pThis->iRefCount);
-# else
- currRefCount = --pThis->iRefCount;
-# endif
+ MsgLock(pThis);
+ currRefCount = --pThis->iRefCount;
if(currRefCount == 0)
{
/* DEV Debugging Only! dbgprintf("msgDestruct\t0x%lx, RefCount now 0, doing DESTROY\n", (unsigned long)pThis); */
@@ -333,8 +333,10 @@ CODESTARTobjDestruct(msg)
rsCStrDestruct(&pThis->pCSPROCID);
if(pThis->pCSMSGID != NULL)
rsCStrDestruct(&pThis->pCSMSGID);
+ MsgUnlock(pThis);
funcDeleteMutex(pThis);
} else {
+ MsgUnlock(pThis);
pThis = NULL; /* tell framework not to destructing the object! */
}
ENDobjDestruct(msg)
@@ -478,13 +480,9 @@ finalize_it:
msg_t *MsgAddRef(msg_t *pM)
{
assert(pM != NULL);
-# ifdef DO_HAVE_ATOMICS
- ATOMIC_INC(pM->iRefCount);
-# else
- MsgLock(pM);
- pM->iRefCount++;
- MsgUnlock(pM);
-# endif
+ MsgLock(pM);
+ pM->iRefCount++;
+ MsgUnlock(pM);
/* DEV debugging only! dbgprintf("MsgAddRef\t0x%x done, Ref now: %d\n", (int)pM, pM->iRefCount);*/
return(pM);
}
diff --git a/runtime/msg.h b/runtime/msg.h
index c428237..fadbb48 100644
--- a/runtime/msg.h
+++ b/runtime/msg.h
@@ -51,6 +51,7 @@
struct msg {
BEGINobjInstance; /* Data to implement generic object - MUST be the first data element! */
pthread_mutexattr_t mutAttr;
+short bDoLock; /* use the mutex? */
pthread_mutex_t mut;
int iRefCount; /* reference counter (0 = unused) */
short bParseHOSTNAME; /* should the hostname be parsed from the message? */
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 5fdae87..3f87fd4 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -136,8 +136,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 0375def..2634a53 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -139,8 +139,6 @@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
RELP_CFLAGS = @RELP_CFLAGS@
RELP_LIBS = @RELP_LIBS@
-RFC3195_CFLAGS = @RFC3195_CFLAGS@
-RFC3195_LIBS = @RFC3195_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
diff --git a/tools/syslogd.c b/tools/syslogd.c
index b32ce02..2c66daa 100644
--- a/tools/syslogd.c
+++ b/tools/syslogd.c
@@ -1607,7 +1607,7 @@ logmsg(msg_t *pMsg, int flags)
assert(pMsg != NULL);
assert(pMsg->pszUxTradMsg != NULL);
msg = (char*) pMsg->pszUxTradMsg;
- dbgprintf("logmsg: flags %x, pri %s, from '%s', msg %s\n", flags, getPRI(pMsg), getRcvFrom(pMsg), msg);
+ dbgprintf("logmsg: flags %x, from '%s', msg %s\n", flags, getRcvFrom(pMsg), msg);
/* rger 2005-11-24 (happy thanksgiving!): we now need to check if we have
* a traditional syslog message or one formatted according to syslog-protocol.