Hello community, here is the log from the commit of package rsyslog for openSUSE:Factory checked in at 2015-11-10 10:03:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rsyslog (Old) and /work/SRC/openSUSE:Factory/.rsyslog.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rsyslog" Changes: -------- --- /work/SRC/openSUSE:Factory/rsyslog/rsyslog.changes 2015-09-30 05:52:05.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.rsyslog.new/rsyslog.changes 2015-11-10 10:03:16.000000000 +0100 @@ -1,0 +2,8 @@ +Sat Nov 7 20:57:19 UTC 2015 - [email protected] + +- rsyslog 8.14.0: + * add property "rawmsg-after-pri" + * bugfix: potential misadresseing in imfile + * bugfix: re_extract RainerScript function did not work + +------------------------------------------------------------------- Old: ---- rsyslog-8.13.0.tar.gz rsyslog-doc-8.13.0.tar.gz New: ---- rsyslog-8.14.0.tar.gz rsyslog-doc-8.14.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rsyslog.spec ++++++ --- /var/tmp/diff_new_pack.2HsMVu/_old 2015-11-10 10:03:17.000000000 +0100 +++ /var/tmp/diff_new_pack.2HsMVu/_new 2015-11-10 10:03:17.000000000 +0100 @@ -20,7 +20,7 @@ Summary: The enhanced syslogd for Linux and Unix License: (GPL-3.0+ and Apache-2.0) Group: System/Daemons -Version: 8.13.0 +Version: 8.14.0 Release: 0 %if 0%{?suse_version} >= 1210 %bcond_without systemd @@ -207,8 +207,7 @@ Source7: module-mysql Source8: module-snmp Source9: module-udpspoof -# generated from https://github.com/rsyslog/ ./release_build.sh this is WIP upstream -Source14: rsyslog-doc-%{version}.tar.gz +Source14: http://www.rsyslog.com/files/download/rsyslog/rsyslog-doc-%{version}.tar.gz Source15: rsyslog.firewall # PATCH-FIX-OPENSUSE rsyslog-unit.patch [email protected] Customize upstream systemd unit for openSUSE needs. ++++++ rsyslog-8.13.0.tar.gz -> rsyslog-8.14.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/.tarball-version new/rsyslog-8.14.0/.tarball-version --- old/rsyslog-8.13.0/.tarball-version 2015-09-22 16:03:49.000000000 +0200 +++ new/rsyslog-8.14.0/.tarball-version 2015-11-03 09:52:25.000000000 +0100 @@ -1 +1 @@ -8.13.0 +8.14.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/ChangeLog new/rsyslog-8.14.0/ChangeLog --- old/rsyslog-8.13.0/ChangeLog 2015-09-22 15:34:21.000000000 +0200 +++ new/rsyslog-8.14.0/ChangeLog 2015-11-03 08:34:15.000000000 +0100 @@ -1,4 +1,14 @@ ------------------------------------------------------------------------------ +Version 8.14.0 [v8-stable] 2015-11-03 +- add property "rawmsg-after-pri" +- bugfix: potential misadresseing in imfile + Could happen when wildcards were used. + see also https://github.com/rsyslog/rsyslog/issues/532 + see also https://github.com/rsyslog/rsyslog/issues/534 + Thanks to zhangdaoling for the bugfix. +- bugfix: re_extract RainerScript function did not work + Thanks to Janmejay Singh for the patch +------------------------------------------------------------------------------ Version 8.13.0 [v8-stable] 2015-09-22 - ZeroMQ enhancements: * Added the ability to set a static publishing topic per action as an diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/configure new/rsyslog-8.14.0/configure --- old/rsyslog-8.13.0/configure 2015-09-21 11:24:50.000000000 +0200 +++ new/rsyslog-8.14.0/configure 2015-11-03 09:52:07.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for rsyslog 8.13.0. +# Generated by GNU Autoconf 2.69 for rsyslog 8.14.0. # # Report bugs to <[email protected]>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='rsyslog' PACKAGE_TARNAME='rsyslog' -PACKAGE_VERSION='8.13.0' -PACKAGE_STRING='rsyslog 8.13.0' +PACKAGE_VERSION='8.14.0' +PACKAGE_STRING='rsyslog 8.14.0' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1656,7 +1656,7 @@ # 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 8.13.0 to adapt to many kinds of systems. +\`configure' configures rsyslog 8.14.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1726,7 +1726,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of rsyslog 8.13.0:";; + short | recursive ) echo "Configuration of rsyslog 8.14.0:";; esac cat <<\_ACEOF @@ -2007,7 +2007,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -rsyslog configure 8.13.0 +rsyslog configure 8.14.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2587,7 +2587,7 @@ 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 8.13.0, which was +It was created by rsyslog $as_me 8.14.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3450,7 +3450,7 @@ # Define the identity of the package. PACKAGE='rsyslog' - VERSION='8.13.0' + VERSION='8.14.0' cat >>confdefs.h <<_ACEOF @@ -22705,7 +22705,7 @@ # 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 8.13.0, which was +This file was extended by rsyslog $as_me 8.14.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22771,7 +22771,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -rsyslog config.status 8.13.0 +rsyslog config.status 8.14.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/configure.ac new/rsyslog-8.14.0/configure.ac --- old/rsyslog-8.13.0/configure.ac 2015-09-21 11:24:38.000000000 +0200 +++ new/rsyslog-8.14.0/configure.ac 2015-11-03 09:51:57.000000000 +0100 @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) -AC_INIT([rsyslog],[8.13.0],[[email protected]]) +AC_INIT([rsyslog],[8.14.0],[[email protected]]) AM_INIT_AUTOMAKE([subdir-objects]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/contrib/omhiredis/omhiredis.c new/rsyslog-8.14.0/contrib/omhiredis/omhiredis.c --- old/rsyslog-8.13.0/contrib/omhiredis/omhiredis.c 2015-09-21 11:23:44.000000000 +0200 +++ new/rsyslog-8.14.0/contrib/omhiredis/omhiredis.c 2015-11-03 08:14:26.000000000 +0100 @@ -284,7 +284,9 @@ pData->tplName = (uchar*)es_str2cstr(pvals[i].val.d.estr, NULL); } else if(!strcmp(actpblk.descr[i].name, "mode")) { pData->modeDescription = es_str2cstr(pvals[i].val.d.estr, NULL); - if (!strcmp(pData->modeDescription, "queue")) { + if (!strcmp(pData->modeDescription, "template")) { + pData->mode = OMHIREDIS_MODE_TEMPLATE; + } else if (!strcmp(pData->modeDescription, "queue")) { pData->mode = OMHIREDIS_MODE_QUEUE; } else if (!strcmp(pData->modeDescription, "publish")) { pData->mode = OMHIREDIS_MODE_PUBLISH; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/grammar/rainerscript.c new/rsyslog-8.14.0/grammar/rainerscript.c --- old/rsyslog-8.13.0/grammar/rainerscript.c 2015-08-25 08:48:34.000000000 +0200 +++ new/rsyslog-8.14.0/grammar/rainerscript.c 2015-11-03 08:10:58.000000000 +0100 @@ -3747,7 +3747,7 @@ regex_t *re; DEFiRet; - if(func->nParams != 2) { + if(func->nParams < 2) { parser_errmsg("rsyslog logic error in line %d of file %s\n", __LINE__, __FILE__); FINALIZE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/plugins/imfile/imfile.c new/rsyslog-8.14.0/plugins/imfile/imfile.c --- old/rsyslog-8.13.0/plugins/imfile/imfile.c 2015-09-21 11:23:44.000000000 +0200 +++ new/rsyslog-8.14.0/plugins/imfile/imfile.c 2015-11-03 08:30:31.000000000 +0100 @@ -368,8 +368,11 @@ } if(i < nWdmap) { /* we need to shift to make room for new entry */ + /* OLD dbgprintf("DDDD: imfile doing wdmap mmemmov(%d, %d, %d) for ADD\n", i,i+1,nWdmap-i); - memmove(wdmap + i, wdmap + i + 1, nWdmap - i); + memmove(wdmap + i, wdmap + i + 1, nWdmap - i); */ + dbgprintf("DDDD: imfile doing wdmap mmemmov(%d, %d, %d) for ADD\n", i + 1,i, sizeof(wd_map_t) * (nWdmap - i)); + memmove(wdmap + i + 1, wdmap + i, sizeof(wd_map_t) * (nWdmap - i)); } wdmap[i].wd = wd; wdmap[i].dirIdx = dirIdx; @@ -398,8 +401,11 @@ if(i < nWdmap-1) { /* we need to shift to delete it (see comment at wdmap definition) */ + /* OLD dbgprintf("DDDD: imfile doing wdmap mmemmov(%d, %d, %d) for DEL\n", i,i+1,nWdmap-i-1); - memmove(wdmap + i, wdmap + i+1, nWdmap - i-1); + memmove(wdmap + i, wdmap + i+1, nWdmap - i-1);*/ + dbgprintf("DDDD: imfile doing wdmap mmemmov(%d, %d, %d) for DEL\n", i, i + 1, sizeof(wd_map_t) * (nWdmap - i - 1)); + memmove(wdmap + i, wdmap + i + 1, sizeof(wd_map_t) * (nWdmap - i - 1)); } --nWdmap; dbgprintf("DDDD: imfile: wd %d deleted, was idx %d\n", wd, i); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/runtime/lookup.c new/rsyslog-8.14.0/runtime/lookup.c --- old/rsyslog-8.13.0/runtime/lookup.c 2015-08-25 08:48:34.000000000 +0200 +++ new/rsyslog-8.14.0/runtime/lookup.c 2015-11-03 08:15:16.000000000 +0100 @@ -203,6 +203,7 @@ } free(pThis->d.strtab); pThis->d.strtab = newlu.d.strtab; /* hand table AND ALL STRINGS over! */ + pThis->nmemb = newlu.nmemb; pthread_rwlock_unlock(&pThis->rwlock); errmsg.LogError(0, RS_RET_OK, "lookup table '%s' reloaded from file '%s'", pThis->name, pThis->filename); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/runtime/msg.c new/rsyslog-8.14.0/runtime/msg.c --- old/rsyslog-8.13.0/runtime/msg.c 2015-09-21 11:23:44.000000000 +0200 +++ new/rsyslog-8.14.0/runtime/msg.c 2015-11-03 08:42:14.000000000 +0100 @@ -71,7 +71,7 @@ /* TODO: move the global variable root to the config object - had no time to to it * right now before vacation -- rgerhards, 2013-07-22 */ -static pthread_rwlock_t glblVars_rwlock; +static pthread_mutex_t glblVars_lock; struct json_object *global_var_root = NULL; /* static data */ @@ -405,6 +405,7 @@ static uchar * jsonPathGetLeaf(uchar *name, int lenName); static struct json_object *jsonDeepCopy(struct json_object *src); static json_bool jsonVarExtract(struct json_object* root, const char *key, struct json_object **value); +void getRawMsgAfterPRI(msg_t * const pM, uchar **pBuf, int *piLen); /* the locking and unlocking implementations: */ @@ -549,6 +550,8 @@ *pPropID = PROP_SYSLOGTAG; } else if(!strcmp((char*) pName, "rawmsg")) { *pPropID = PROP_RAWMSG; + } else if(!strcmp((char*) pName, "rawmsg-after-pri")) { + *pPropID = PROP_RAWMSG_AFTER_PRI; } else if(!strcmp((char*) pName, "inputname")) { *pPropID = PROP_INPUTNAME; } else if(!strcmp((char*) pName, "fromhost")) { @@ -1566,6 +1569,38 @@ } } +void +getRawMsgAfterPRI(msg_t * const pM, uchar **pBuf, int *piLen) +{ + if(pM == NULL) { + *pBuf= UCHAR_CONSTANT(""); + *piLen = 0; + } else { + if(pM->pszRawMsg == NULL) { + *pBuf= UCHAR_CONSTANT(""); + *piLen = 0; + } else { + /* unfortunately, pM->offAfterPRI seems NOT to be + * correct/consistent in all cases. imuxsock and imudp + * seem to have other values than imptcp. Testbench + * covers some of that. As a work-around, we caluculate + * the value ourselfes here. -- rgerhards, 2015-10-09 + */ + size_t offAfterPRI = 0; + if(pM->pszRawMsg[0] == '<') { /* do we have a PRI? */ + if(pM->pszRawMsg[2] == '>') + offAfterPRI = 3; + else if(pM->pszRawMsg[3] == '>') + offAfterPRI = 4; + else if(pM->pszRawMsg[4] == '>') + offAfterPRI = 5; + } + *pBuf = pM->pszRawMsg + offAfterPRI; + *piLen = pM->iLenRawMsg - offAfterPRI; + } + } +} + /* note: setMSGLen() is only for friends who really know what they * do. Setting an invalid length can be desasterous! @@ -2781,7 +2816,7 @@ } else if(pProp->id == PROP_LOCAL_VAR) { jroot = pMsg->localvars; } else if(pProp->id == PROP_GLOBAL_VAR) { - pthread_rwlock_rdlock(&glblVars_rwlock); + pthread_mutex_lock(&glblVars_lock); jroot = global_var_root; } else { DBGPRINTF("msgGetJSONPropVal; invalid property id %d\n", @@ -2806,7 +2841,7 @@ finalize_it: if(pProp->id == PROP_GLOBAL_VAR) - pthread_rwlock_unlock(&glblVars_rwlock); + pthread_mutex_unlock(&glblVars_lock); if(*pRes == NULL) { /* could not find any value, so set it to empty */ *pRes = (unsigned char*)""; @@ -2832,7 +2867,7 @@ } else if(pProp->id == PROP_LOCAL_VAR) { jroot = pMsg->localvars; } else if(pProp->id == PROP_GLOBAL_VAR) { - pthread_rwlock_rdlock(&glblVars_rwlock); + pthread_mutex_lock(&glblVars_lock); jroot = global_var_root; } else { DBGPRINTF("msgGetJSONPropJSON; invalid property id %d\n", @@ -2859,7 +2894,7 @@ if(pProp->id == PROP_GLOBAL_VAR) { if (*pjson != NULL) *pjson = jsonDeepCopy(*pjson); - pthread_rwlock_unlock(&glblVars_rwlock); + pthread_mutex_unlock(&glblVars_lock); } else { if (*pjson != NULL) json_object_get(*pjson); @@ -3134,6 +3169,9 @@ case PROP_RAWMSG: getRawMsg(pMsg, &pRes, &bufLen); break; + case PROP_RAWMSG_AFTER_PRI: + getRawMsgAfterPRI(pMsg, &pRes, &bufLen); + break; case PROP_INPUTNAME: getInputName(pMsg, &pRes, &bufLen); break; @@ -4267,7 +4305,7 @@ } else if(name[0] == '.') { pjroot = &pM->localvars; } else if (name[0] == '/') { /* globl var */ - pthread_rwlock_wrlock(&glblVars_rwlock); + pthread_mutex_lock(&glblVars_lock); pjroot = &global_var_root; if (sharedReference) { given = json; @@ -4329,7 +4367,7 @@ finalize_it: if(name[0] == '/') - pthread_rwlock_unlock(&glblVars_rwlock); + pthread_mutex_unlock(&glblVars_lock); MsgUnlock(pM); RETiRet; } @@ -4350,7 +4388,7 @@ } else if(name[0] == '.') { jroot = &pM->localvars; } else if (name[0] == '/') { /* globl var */ - pthread_rwlock_wrlock(&glblVars_rwlock); + pthread_mutex_lock(&glblVars_lock); jroot = &global_var_root; } else { DBGPRINTF("Passed name %s is unknown kind of variable (It is not CEE, Local or Global variable).", name); @@ -4391,7 +4429,7 @@ finalize_it: if(name[0] == '/') - pthread_rwlock_unlock(&glblVars_rwlock); + pthread_mutex_unlock(&glblVars_lock); MsgUnlock(pM); RETiRet; } @@ -4577,7 +4615,7 @@ * rgerhards, 2008-01-04 */ BEGINObjClassInit(msg, 1, OBJ_IS_CORE_MODULE) - pthread_rwlock_init(&glblVars_rwlock, NULL); + pthread_mutex_init(&glblVars_lock, NULL); /* request objects we use */ CHKiRet(objUse(datetime, CORE_COMPONENT)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/runtime/typedefs.h new/rsyslog-8.14.0/runtime/typedefs.h --- old/rsyslog-8.13.0/runtime/typedefs.h 2015-07-09 10:00:57.000000000 +0200 +++ new/rsyslog-8.14.0/runtime/typedefs.h 2015-11-03 08:15:36.000000000 +0100 @@ -194,6 +194,7 @@ #define PROP_MSGID 22 #define PROP_PARSESUCCESS 23 #define PROP_JSONMESG 24 +#define PROP_RAWMSG_AFTER_PRI 25 #define PROP_SYS_NOW 150 #define PROP_SYS_YEAR 151 #define PROP_SYS_MONTH 152 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/Makefile.am new/rsyslog-8.14.0/tests/Makefile.am --- old/rsyslog-8.13.0/tests/Makefile.am 2015-09-21 11:23:44.000000000 +0200 +++ new/rsyslog-8.14.0/tests/Makefile.am 2015-11-03 08:15:58.000000000 +0100 @@ -24,6 +24,7 @@ fac_invld2.sh \ fac_invld3.sh \ fac_invld4_rfc5424.sh \ + rawmsg-after-pri.sh \ rfc5424parser.sh \ tcp_forwarding_tpl.sh \ tcp_forwarding_dflt_tpl.sh \ @@ -120,6 +121,8 @@ rscript_replace_complex.sh \ rscript_wrap2.sh \ rscript_wrap3.sh \ + rscript_re_extract.sh \ + rscript_re_match.sh \ rs_optimizer_pri.sh \ cee_simple.sh \ cee_diskqueue.sh \ @@ -128,6 +131,7 @@ incltest_dir_wildcard.sh \ incltest_dir_empty_wildcard.sh \ linkedlistqueue.sh \ + lookup_table.sh \ key_dereference_on_uninitialized_variable_space.sh @@ -487,6 +491,8 @@ testsuites/fac_invld3.conf \ fac_invld4_rfc5424.sh \ testsuites/fac_invld4_rfc5424.conf \ + rawmsg-after-pri.sh \ + testsuites/rawmsg-after-pri.conf \ rs_optimizer_pri.sh \ testsuites/rs_optimizer_pri.conf \ rscript_prifilt.sh \ @@ -854,6 +860,14 @@ testsuites/stop_when_array_has_element.conf \ key_dereference_on_uninitialized_variable_space.sh \ testsuites/key_dereference_on_uninitialized_variable_space.conf \ + rscript_re_extract.sh \ + testsuites/rscript_re_extract.conf \ + rscript_re_match.sh \ + testsuites/rscript_re_match.conf \ + lookup_table.sh \ + testsuites/lookup_table.conf \ + testsuites/xlate.lkp_tbl \ + testsuites/xlate_more.lkp_tbl \ cfg.sh # TODO: re-enable diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/Makefile.in new/rsyslog-8.14.0/tests/Makefile.in --- old/rsyslog-8.13.0/tests/Makefile.in 2015-09-21 11:24:55.000000000 +0200 +++ new/rsyslog-8.14.0/tests/Makefile.in 2015-11-03 09:52:06.000000000 +0100 @@ -91,7 +91,8 @@ @ENABLE_TESTBENCH_TRUE@ fac_ftp.sh fac_ntp.sh fac_uucp.sh \ @ENABLE_TESTBENCH_TRUE@ fac_invld1.sh fac_invld2.sh \ @ENABLE_TESTBENCH_TRUE@ fac_invld3.sh fac_invld4_rfc5424.sh \ -@ENABLE_TESTBENCH_TRUE@ rfc5424parser.sh tcp_forwarding_tpl.sh \ +@ENABLE_TESTBENCH_TRUE@ rawmsg-after-pri.sh rfc5424parser.sh \ +@ENABLE_TESTBENCH_TRUE@ tcp_forwarding_tpl.sh \ @ENABLE_TESTBENCH_TRUE@ tcp_forwarding_dflt_tpl.sh \ @ENABLE_TESTBENCH_TRUE@ arrayqueue.sh global_vars.sh \ @ENABLE_TESTBENCH_TRUE@ da-mainmsg-q.sh validation-run.sh \ @@ -157,12 +158,13 @@ @ENABLE_TESTBENCH_TRUE@ rscript_unaffected_reset.sh \ @ENABLE_TESTBENCH_TRUE@ rscript_replace_complex.sh \ @ENABLE_TESTBENCH_TRUE@ rscript_wrap2.sh rscript_wrap3.sh \ -@ENABLE_TESTBENCH_TRUE@ rs_optimizer_pri.sh cee_simple.sh \ -@ENABLE_TESTBENCH_TRUE@ cee_diskqueue.sh incltest.sh \ -@ENABLE_TESTBENCH_TRUE@ incltest_dir.sh \ +@ENABLE_TESTBENCH_TRUE@ rscript_re_extract.sh \ +@ENABLE_TESTBENCH_TRUE@ rscript_re_match.sh rs_optimizer_pri.sh \ +@ENABLE_TESTBENCH_TRUE@ cee_simple.sh cee_diskqueue.sh \ +@ENABLE_TESTBENCH_TRUE@ incltest.sh incltest_dir.sh \ @ENABLE_TESTBENCH_TRUE@ incltest_dir_wildcard.sh \ @ENABLE_TESTBENCH_TRUE@ incltest_dir_empty_wildcard.sh \ -@ENABLE_TESTBENCH_TRUE@ linkedlistqueue.sh \ +@ENABLE_TESTBENCH_TRUE@ linkedlistqueue.sh lookup_table.sh \ @ENABLE_TESTBENCH_TRUE@ key_dereference_on_uninitialized_variable_space.sh \ @ENABLE_TESTBENCH_TRUE@ $(am__append_1) $(am__append_2) \ @ENABLE_TESTBENCH_TRUE@ $(am__append_3) $(am__append_4) \ @@ -1003,6 +1005,8 @@ testsuites/fac_invld3.conf \ fac_invld4_rfc5424.sh \ testsuites/fac_invld4_rfc5424.conf \ + rawmsg-after-pri.sh \ + testsuites/rawmsg-after-pri.conf \ rs_optimizer_pri.sh \ testsuites/rs_optimizer_pri.conf \ rscript_prifilt.sh \ @@ -1370,6 +1374,14 @@ testsuites/stop_when_array_has_element.conf \ key_dereference_on_uninitialized_variable_space.sh \ testsuites/key_dereference_on_uninitialized_variable_space.conf \ + rscript_re_extract.sh \ + testsuites/rscript_re_extract.conf \ + rscript_re_match.sh \ + testsuites/rscript_re_match.conf \ + lookup_table.sh \ + testsuites/lookup_table.conf \ + testsuites/xlate.lkp_tbl \ + testsuites/xlate_more.lkp_tbl \ cfg.sh @@ -1859,6 +1871,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +rawmsg-after-pri.sh.log: rawmsg-after-pri.sh + @p='rawmsg-after-pri.sh'; \ + b='rawmsg-after-pri.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) rfc5424parser.sh.log: rfc5424parser.sh @p='rfc5424parser.sh'; \ b='rfc5424parser.sh'; \ @@ -2524,6 +2543,20 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +rscript_re_extract.sh.log: rscript_re_extract.sh + @p='rscript_re_extract.sh'; \ + b='rscript_re_extract.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +rscript_re_match.sh.log: rscript_re_match.sh + @p='rscript_re_match.sh'; \ + b='rscript_re_match.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) rs_optimizer_pri.sh.log: rs_optimizer_pri.sh @p='rs_optimizer_pri.sh'; \ b='rs_optimizer_pri.sh'; \ @@ -2579,6 +2612,13 @@ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +lookup_table.sh.log: lookup_table.sh + @p='lookup_table.sh'; \ + b='lookup_table.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) key_dereference_on_uninitialized_variable_space.sh.log: key_dereference_on_uninitialized_variable_space.sh @p='key_dereference_on_uninitialized_variable_space.sh'; \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/diag.sh new/rsyslog-8.14.0/tests/diag.sh --- old/rsyslog-8.13.0/tests/diag.sh 2015-09-21 11:23:44.000000000 +0200 +++ new/rsyslog-8.14.0/tests/diag.sh 2015-11-03 08:15:16.000000000 +0100 @@ -195,6 +195,10 @@ echo WaitMainQueueEmpty | ./diagtalker || . $srcdir/diag.sh error-exit $? fi ;; + 'issue-HUP') # shut rsyslogd down when main queue is empty. $2 is the instance. + kill -HUP `cat rsyslog$2.pid` + ./msleep 1000 + ;; 'shutdown-when-empty') # shut rsyslogd down when main queue is empty. $2 is the instance. if [ "$2" == "2" ] then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/imfile-endregex.sh new/rsyslog-8.14.0/tests/imfile-endregex.sh --- old/rsyslog-8.13.0/tests/imfile-endregex.sh 2015-08-25 08:48:34.000000000 +0200 +++ new/rsyslog-8.14.0/tests/imfile-endregex.sh 2015-11-03 08:18:36.000000000 +0100 @@ -3,7 +3,12 @@ # This test mimics the test imfile-readmode2.sh, but works via # endmsg.regex. It's kind of a base test for the regex functionality. echo ====================================================================== -echo [imfile-endregex.sh] +# Check if inotify header exist +if [ -n "$(find /usr/include -name 'inotify.h' -print -quit)" ]; then + echo [imfile-endregex.sh] +else + exit 77 # no inotify available, skip this test +fi . $srcdir/diag.sh init . $srcdir/diag.sh startup imfile-endregex.conf diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/imfile-readmode2-with-persists-data-during-stop.sh new/rsyslog-8.14.0/tests/imfile-readmode2-with-persists-data-during-stop.sh --- old/rsyslog-8.13.0/tests/imfile-readmode2-with-persists-data-during-stop.sh 2015-08-25 08:48:34.000000000 +0200 +++ new/rsyslog-8.14.0/tests/imfile-readmode2-with-persists-data-during-stop.sh 2015-11-03 08:18:36.000000000 +0100 @@ -1,7 +1,12 @@ #!/bin/bash # This is part of the rsyslog testbench, licensed under ASL 2.0 echo ====================================================================== -echo [imfile-readmode2-with-persists-data-during-stop.sh] +# Check if inotify header exist +if [ -n "$(find /usr/include -name 'inotify.h' -print -quit)" ]; then + echo [imfile-readmode2-with-persists-data-during-stop.sh] +else + exit 77 # no inotify available, skip this test +fi . $srcdir/diag.sh init . $srcdir/diag.sh startup imfile-readmode2-with-persists-data-during-stop.conf diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/imfile-readmode2-with-persists.sh new/rsyslog-8.14.0/tests/imfile-readmode2-with-persists.sh --- old/rsyslog-8.13.0/tests/imfile-readmode2-with-persists.sh 2015-08-25 08:48:34.000000000 +0200 +++ new/rsyslog-8.14.0/tests/imfile-readmode2-with-persists.sh 2015-11-03 08:18:36.000000000 +0100 @@ -1,7 +1,12 @@ #!/bin/bash # This is part of the rsyslog testbench, licensed under ASL 2.0 echo ====================================================================== -echo [imfile-readmode2-with-persists.sh] +# Check if inotify header exist +if [ -n "$(find /usr/include -name 'inotify.h' -print -quit)" ]; then + echo [imfile-readmode2-with-persists.sh] +else + exit 77 # no inotify available, skip this test +fi . $srcdir/diag.sh init . $srcdir/diag.sh startup imfile-readmode2-with-persists.conf diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/imfile-readmode2.sh new/rsyslog-8.14.0/tests/imfile-readmode2.sh --- old/rsyslog-8.13.0/tests/imfile-readmode2.sh 2015-08-25 08:48:34.000000000 +0200 +++ new/rsyslog-8.14.0/tests/imfile-readmode2.sh 2015-11-03 08:18:36.000000000 +0100 @@ -1,7 +1,12 @@ #!/bin/bash # This is part of the rsyslog testbench, licensed under ASL 2.0 echo ====================================================================== -echo [imfile-readmode2.sh] +# Check if inotify header exist +if [ -n "$(find /usr/include -name 'inotify.h' -print -quit)" ]; then + echo [imfile-readmode2.sh] +else + exit 77 # no inotify available, skip this test +fi . $srcdir/diag.sh init . $srcdir/diag.sh startup imfile-readmode2.conf diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/imtcp-tls-basic-vg.sh new/rsyslog-8.14.0/tests/imtcp-tls-basic-vg.sh --- old/rsyslog-8.13.0/tests/imtcp-tls-basic-vg.sh 2015-08-25 08:48:34.000000000 +0200 +++ new/rsyslog-8.14.0/tests/imtcp-tls-basic-vg.sh 2015-11-03 08:34:13.000000000 +0100 @@ -7,7 +7,7 @@ echo \$DefaultNetstreamDriverCAFile $srcdir/tls-certs/ca.pem >rsyslog.conf.tlscert echo \$DefaultNetstreamDriverCertFile $srcdir/tls-certs/cert.pem >>rsyslog.conf.tlscert echo \$DefaultNetstreamDriverKeyFile $srcdir/tls-certs/key.pem >>rsyslog.conf.tlscert -. $srcdir/diag.sh startup-vg imtcp-tls-basic.conf +. $srcdir/diag.sh startup-vg-noleak imtcp-tls-basic.conf . $srcdir/diag.sh tcpflood -p13514 -m50000 -Ttls -Z$srcdir/tls-certs/cert.pem -z$srcdir/tls-certs/key.pem . $srcdir/diag.sh shutdown-when-empty # shut down rsyslogd when done processing messages . $srcdir/diag.sh wait-shutdown-vg diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/lookup_table.sh new/rsyslog-8.14.0/tests/lookup_table.sh --- old/rsyslog-8.13.0/tests/lookup_table.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/lookup_table.sh 2015-11-03 08:15:16.000000000 +0100 @@ -0,0 +1,24 @@ +#!/bin/bash +# added 2015-09-30 by singh.janmejay +# This file is part of the rsyslog project, released under ASL 2.0 +echo =============================================================================== +echo \[lookup_table_reload.sh\]: test for lookup-table and HUP based reloading of it +. $srcdir/diag.sh init +cp $srcdir/testsuites/xlate.lkp_tbl $srcdir/xlate.lkp_tbl +. $srcdir/diag.sh startup lookup_table.conf +. $srcdir/diag.sh injectmsg 0 3 +. $srcdir/diag.sh wait-queueempty +. $srcdir/diag.sh content-check "msgnum:00000000: foo_old" +. $srcdir/diag.sh content-check "msgnum:00000001: bar_old" +. $srcdir/diag.sh assert-content-missing "baz" +cp $srcdir/testsuites/xlate_more.lkp_tbl $srcdir/xlate.lkp_tbl +. $srcdir/diag.sh issue-HUP +. $srcdir/diag.sh injectmsg 0 3 +echo doing shutdown +. $srcdir/diag.sh shutdown-when-empty +echo wait on shutdown +. $srcdir/diag.sh wait-shutdown +. $srcdir/diag.sh content-check "msgnum:00000000: foo_new" +. $srcdir/diag.sh content-check "msgnum:00000001: bar_new" +. $srcdir/diag.sh content-check "msgnum:00000002: baz" +. $srcdir/diag.sh exit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/rawmsg-after-pri.sh new/rsyslog-8.14.0/tests/rawmsg-after-pri.sh --- old/rsyslog-8.13.0/tests/rawmsg-after-pri.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/rawmsg-after-pri.sh 2015-11-03 08:15:58.000000000 +0100 @@ -0,0 +1,23 @@ +#!/bin/bash +# This file is part of the rsyslog project, released under ASL 2.0 +. $srcdir/diag.sh init +. $srcdir/diag.sh startup rawmsg-after-pri.conf +. $srcdir/diag.sh tcpflood -m1 -P 129 +. $srcdir/diag.sh shutdown-when-empty # shut down rsyslogd when done processing messages +. $srcdir/diag.sh wait-shutdown # and wait for it to terminate +echo "Mar 1 01:00:00 172.20.245.8 tag msgnum:00000000:" > rsyslog.out.compare +NUMLINES=$(grep -c "^Mar 1 01:00:00 172.20.245.8 tag msgnum:00000000:$" rsyslog.out.log 2>/dev/null) + +if [ -z $NUMLINES ]; then + echo "ERROR: output file seems not to exist" + ls -l rsyslog.out.log + cat rsyslog.out.log + . $srcdir/diag.sh error-exit 1 +else + if [ ! $NUMLINES -eq 1 ]; then + echo "ERROR: output format does not match expectation" + cat rsyslog.out.log + . $srcdir/diag.sh error-exit 1 + fi +fi +. $srcdir/diag.sh exit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/rscript_re_extract.sh new/rsyslog-8.14.0/tests/rscript_re_extract.sh --- old/rsyslog-8.13.0/tests/rscript_re_extract.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/rscript_re_extract.sh 2015-11-03 08:10:58.000000000 +0100 @@ -0,0 +1,14 @@ +#!/bin/bash +# added 2015-09-29 by singh.janmejay +# This file is part of the rsyslog project, released under ASL 2.0 +echo =============================================================================== +echo \[rscript_re_extract.sh\]: test re_extract rscript-fn +. $srcdir/diag.sh init +. $srcdir/diag.sh startup rscript_re_extract.conf +. $srcdir/diag.sh tcpflood -m 1 -I $srcdir/testsuites/date_time_msg +echo doing shutdown +. $srcdir/diag.sh shutdown-when-empty +echo wait on shutdown +. $srcdir/diag.sh wait-shutdown +. $srcdir/diag.sh content-check "*Number is 19597*" +. $srcdir/diag.sh exit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/rscript_re_match.sh new/rsyslog-8.14.0/tests/rscript_re_match.sh --- old/rsyslog-8.13.0/tests/rscript_re_match.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/rscript_re_match.sh 2015-11-03 08:10:58.000000000 +0100 @@ -0,0 +1,14 @@ +#!/bin/bash +# added 2015-09-29 by singh.janmejay +# This file is part of the rsyslog project, released under ASL 2.0 +echo =============================================================================== +echo \[rscript_re_match.sh\]: test re_match rscript-fn +. $srcdir/diag.sh init +. $srcdir/diag.sh startup rscript_re_match.conf +. $srcdir/diag.sh tcpflood -m 1 -I $srcdir/testsuites/date_time_msg +echo doing shutdown +. $srcdir/diag.sh shutdown-when-empty +echo wait on shutdown +. $srcdir/diag.sh wait-shutdown +. $srcdir/diag.sh content-check "*Matched*" +. $srcdir/diag.sh exit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/testsuites/lookup_table.conf new/rsyslog-8.14.0/tests/testsuites/lookup_table.conf --- old/rsyslog-8.13.0/tests/testsuites/lookup_table.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/testsuites/lookup_table.conf 2015-11-03 08:15:16.000000000 +0100 @@ -0,0 +1,9 @@ +$IncludeConfig diag-common.conf + +lookup_table(name="xlate" file="xlate.lkp_tbl") + +template(name="outfmt" type="string" string="- %msg% %$.lkp%\n") + +set $.lkp = lookup("xlate", $msg); + +action(type="omfile" file="./rsyslog.out.log" template="outfmt") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/testsuites/rawmsg-after-pri.conf new/rsyslog-8.14.0/tests/testsuites/rawmsg-after-pri.conf --- old/rsyslog-8.13.0/tests/testsuites/rawmsg-after-pri.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/testsuites/rawmsg-after-pri.conf 2015-11-03 08:15:58.000000000 +0100 @@ -0,0 +1,8 @@ +$IncludeConfig diag-common.conf + +module(load="../plugins/imtcp/.libs/imtcp") +input(type="imtcp" port="13514") + +template(type="string" name="outfmt" string="%rawmsg-after-pri%\n") +if $syslogfacility-text == "local0" then + action(type="omfile" file="rsyslog.out.log" template="outfmt") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/testsuites/rscript_re_extract.conf new/rsyslog-8.14.0/tests/testsuites/rscript_re_extract.conf --- old/rsyslog-8.13.0/tests/testsuites/rscript_re_extract.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/testsuites/rscript_re_extract.conf 2015-11-03 08:10:58.000000000 +0100 @@ -0,0 +1,9 @@ +$IncludeConfig diag-common.conf +template(name="outfmt" type="string" string="*Number is %$.number%*\n") + +module(load="../plugins/imtcp/.libs/imtcp") +input(type="imtcp" port="13514") + +set $.number = re_extract($msg, '.* ([0-9]+)$', 0, 1, 'none'); + +action(type="omfile" file="./rsyslog.out.log" template="outfmt") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/testsuites/rscript_re_match.conf new/rsyslog-8.14.0/tests/testsuites/rscript_re_match.conf --- old/rsyslog-8.13.0/tests/testsuites/rscript_re_match.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/testsuites/rscript_re_match.conf 2015-11-03 08:10:58.000000000 +0100 @@ -0,0 +1,10 @@ +$IncludeConfig diag-common.conf +template(name="outfmt" type="string" string="*Matched*\n") + +module(load="../plugins/imtcp/.libs/imtcp") +input(type="imtcp" port="13514") + +if (re_match($msg, '.* ([0-9]+)$')) then { + action(type="omfile" file="./rsyslog.out.log" template="outfmt") +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/testsuites/xlate.lkp_tbl new/rsyslog-8.14.0/tests/testsuites/xlate.lkp_tbl --- old/rsyslog-8.13.0/tests/testsuites/xlate.lkp_tbl 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/testsuites/xlate.lkp_tbl 2015-11-03 08:15:16.000000000 +0100 @@ -0,0 +1,5 @@ +{ + "table":[ + {"index":" msgnum:00000000:", "value":"foo_old" }, + {"index":" msgnum:00000001:", "value":"bar_old" }] +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tests/testsuites/xlate_more.lkp_tbl new/rsyslog-8.14.0/tests/testsuites/xlate_more.lkp_tbl --- old/rsyslog-8.13.0/tests/testsuites/xlate_more.lkp_tbl 1970-01-01 01:00:00.000000000 +0100 +++ new/rsyslog-8.14.0/tests/testsuites/xlate_more.lkp_tbl 2015-11-03 08:15:16.000000000 +0100 @@ -0,0 +1,6 @@ +{ + "table":[ + {"index":" msgnum:00000000:", "value":"foo_new" }, + {"index":" msgnum:00000001:", "value":"bar_new" }, + {"index":" msgnum:00000002:", "value":"baz" }] +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rsyslog-8.13.0/tools/omfile.c new/rsyslog-8.14.0/tools/omfile.c --- old/rsyslog-8.13.0/tools/omfile.c 2015-08-25 08:48:34.000000000 +0200 +++ new/rsyslog-8.14.0/tools/omfile.c 2015-11-03 08:17:49.000000000 +0100 @@ -1037,14 +1037,16 @@ writeFile(pData, pParams, i); } /* Note: pStrm may be NULL if there was an error opening the stream */ - if(pData->bFlushOnTXEnd && pData->pStrm != NULL) { - /* if we have an async writer, it controls the flush via - * a timeout. However, without it, we actually need to flush, - * else incomplete records are written. - */ - if(!pData->bUseAsyncWriter) + if(pData->bUseAsyncWriter) { + if(pData->bFlushOnTXEnd && pData->pStrm != NULL) { CHKiRet(strm.Flush(pData->pStrm)); + } + } else { + if(pData->pStrm != NULL) { + CHKiRet(strm.Flush(pData->pStrm)); + } } + finalize_it: pthread_mutex_unlock(&pData->mutWrite); ENDcommitTransaction ++++++ rsyslog-doc-8.13.0.tar.gz -> rsyslog-doc-8.14.0.tar.gz ++++++ ++++ 16553 lines of diff (skipped)
