enhanced module loader to not rely on PATH_MAX
[rsyslog.git] / ChangeLog
1 ---------------------------------------------------------------------------
2 Version 5.9.5  [V5-DEVEL], 2011-11-29
3 - enhanced module loader to not rely on PATH_MAX
4 ---------------------------------------------------------------------------
5 Version 5.9.4  [V5-DEVEL], 2011-11-29
6 - imuxsock: added capability to "annotate" messages with "trusted
7   information", which contains some properties obtained from the system
8   and as such sure to not be faked. This is inspired by the similiar idea
9   introduced in systemd.
10 - removed dependency on gcrypt for recently-enough GnuTLS
11   see: http://bugzilla.adiscon.com/show_bug.cgi?id=289
12 - bugfix: imuxsock did no longer ignore message-provided timestamp, if
13   so configured (the *default*). Lead to no longer sub-second timestamps.
14   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=281
15 - bugfix: omfile returns fatal error code for things that go really wrong
16   previously, RS_RET_RESUME was returned, which lead to a loop inside the
17   rule engine as omfile could not really recover.
18 - bugfix: rsyslogd -v always said 64 atomics were not present
19   thanks to mono_matsuko for the patch
20 ---------------------------------------------------------------------------
21 Version 5.9.3  [V5-DEVEL], 2011-09-01
22 - bugfix/security: off-by-two bug in legacy syslog parser, CVE-2011-3200
23 - bugfix: mark message processing did not work correctly
24 - added capability to emit config error location info for warnings 
25   otherwise, omusrmsg's warning about new config format was not
26   accompanied by problem location.
27 - bugfix: potential misadressing in property replacer
28 - bugfix: MSGID corruption in RFC5424 parser under some circumstances
29   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=275
30 - bugfix: The NUL-Byte for the syslogtag was not copied in MsgDup (msg.c)
31 ---------------------------------------------------------------------------
32 Version 5.9.2  [V5-DEVEL] (rgerhards), 2011-07-11
33 - systemd support: set stdout/stderr to null - thx to Lennart for the patch
34 - added support for the ":omusrmsg:" syntax in configuring user messages
35 - added support for the ":omfile:" syntax in configuring user messages
36 ---------------------------------------------------------------------------
37 Version 5.9.1  [V5-DEVEL] (rgerhards), 2011-06-30
38 - added support for obtaining timestamp for kernel message from message
39   If the kernel time-stamps messages, time is now take from that
40   timestamp instead of the system time when the message was read. This
41   provides much better accuracy. Thanks to Lennart Poettering for
42   suggesting this feature and his help during implementation.
43 - added support for obtaining timestamp from system for imuxsock
44   This permits to read the time a message was submitted to the system
45   log socket. Most importantly, this is provided in microsecond resolution.
46   So we are able to obtain high precision timestampis even for messages
47   that were - as is usual - not formatted with them. This also simplifies
48   things in regard to local time calculation in chroot environments.
49   Many thanks to Lennart Poettering for suggesting this feature,
50   providing some guidance on implementing it and coordinating getting the
51   necessary support into the Linux kernel.
52 - bugfix: timestamp was incorrectly calculated for timezones with minute
53   offset
54   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=271
55 - bugfix: problems in failover action handling
56   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=270
57   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=254
58 - bugfix: mutex was invalidly left unlocked during action processing
59   At least one case where this can occur is during thread shutdown, which
60   may be initiated by lower activity. In most cases, this is quite
61   unlikely to happen. However, if it does, data structures may be 
62   corrupted which could lead to fatal failure and segfault. I detected
63   this via a testbench test, not a user report. But I assume that some
64   users may have had unreproducable aborts that were cause by this bug.
65 - bugfix: memory leak in imtcp & subsystems under some circumstances
66   This leak is tied to error conditions which lead to incorrect cleanup
67   of some data structures. [backport from v6]
68 - bugfix/improvement:$WorkDirectory now gracefully handles trailing slashes
69 ---------------------------------------------------------------------------
70 Version 5.9.0  [V5-DEVEL] (rgerhards), 2011-06-08
71 - imfile: added $InputFileMaxLinesAtOnce directive
72 - enhanced imfile to support input batching
73 - added capability for imtcp and imptcp to activate keep-alive packets
74   at the socket layer. This has not been added to imttcp, as the latter is
75   only an experimental module, and one which did not prove to be useful.
76   reference: http://kb.monitorware.com/post20791.html
77 - added support to control KEEPALIVE settings in imptcp
78   this has not yet been added to imtcp, but could be done on request.
79 - $ActionName is now also used for naming of queues in impstats
80   as well as in the debug output
81 - bugfix: do not open files with full privileges, if privs will be dropped
82   This make the privilege drop code more bulletproof, but breaks Ubuntu's
83   work-around for log files created by external programs with the wrong
84   user and/or group. Note that it was long said that this "functionality"
85   would break once we go for serious privilege drop code, so hopefully
86   nobody still depends on it (and, if so, they lost...).
87 - bugfix: pipes not opened in full priv mode when privs are to be dropped
88 - this begins a new devel branch for v5
89 - better handling of queue i/o errors in disk queues. This is kind of a
90   bugfix, but a very intrusive one, this it goes into the devel version
91   first. Right now, "file not found" is handled and leads to the new
92   emergency mode, in which disk action is stopped and the queue run
93   in direct mode. An error message is emited if this happens.
94 - added support for user-level PRI provided via systemd
95 - added new config directive $InputTCPFlowControl to select if tcp
96   received messages shall be flagged as light delayable or not.
97 - enhanced omhdfs to support batching mode. This permits to increase
98   performance, as we now call the HDFS API with much larger message
99   sizes and far more infrequently
100 - bugfix: failover did not work correctly if repeated msg reduction was on
101   affected directive was: $ActionExecOnlyWhenPreviousIsSuspended on
102   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=236
103 ---------------------------------------------------------------------------
104 Version 5.8.6  [V5-stable] 2011-10-21
105 - bugfix: missing whitespace after property-based filter was not detected
106 - bugfix: $OMFileFlushInterval period was doubled - now using correct value
107 - bugfix: ActionQueue could malfunction due to index error
108   Thanks to Vlad Grigorescu for the patch
109 - bugfix: $ActionExecOnlyOnce interval did not work properly
110   Thanks to Tomas Heinrich for the patch
111 - bugfix: race condition when extracting program name, APPNAME, structured
112   data and PROCID (RFC5424 fields) could lead to invalid characters e.g.
113   in dynamic file names or during forwarding (general malfunction of these
114   fields in templates, mostly under heavy load)
115 - bugfix: imuxsock did no longer ignore message-provided timestamp, if
116   so configured (the *default*). Lead to no longer sub-second timestamps.
117   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=281
118 - bugfix: omfile returns fatal error code for things that go really wrong
119   previously, RS_RET_RESUME was returned, which lead to a loop inside the
120   rule engine as omfile could not really recover.
121 - bugfix: imfile did invalid system call under some circumstances
122   when a file that was to be monitored did not exist BUT the state file
123   actually existed. Mostly a cosmetic issue. Root cause was incomplete
124   error checking in stream.c; so patch may affect other code areas.
125 - bugfix: rsyslogd -v always said 64 atomics were not present
126   thanks to mono_matsuko for the patch
127 ---------------------------------------------------------------------------
128 Version 5.8.5  [V5-stable] (rgerhards/al), 2011-09-01
129 - bugfix/security: off-by-two bug in legacy syslog parser, CVE-2011-3200
130 - bugfix: mark message processing did not work correctly
131 - bugfix: potential hang condition during tag emulation
132 - bugfix: too-early string termination during tag emulation
133 - bugfix: The NUL-Byte for the syslogtag was not copied in MsgDup (msg.c)
134 - bugfix: fixed incorrect state handling for Discard Action (transactions)
135   Note: This caused all messages in a batch to be set to COMMITTED, 
136   even if they were discarded. 
137 ---------------------------------------------------------------------------
138 Version 5.8.4  [V5-stable] (al), 2011-08-10
139 - bugfix: potential misadressing in property replacer
140 - bugfix: memcpy overflow can occur in allowed sender checkig
141   if a name is resolved to IPv4-mapped-on-IPv6 address
142   Found by Ismail Dönmez at suse
143 - bugfix: potential misadressing in property replacer
144 - bugfix: MSGID corruption in RFC5424 parser under some circumstances
145   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=275
146 ---------------------------------------------------------------------------
147 Version 5.8.3  [V5-stable] (rgerhards), 2011-07-11
148 - systemd support: set stdout/stderr to null - thx to Lennart for the patch
149 - added support for the ":omusrmsg:" syntax in configuring user messages
150 - added support for the ":omfile:" syntax in configuring user messages
151   Note: previous outchannel syntax will generate a warning message. This
152   may be surprising to some users, but it is quite urgent to alert them
153   of the new syntax as v6 can no longer support the previous one.
154 ---------------------------------------------------------------------------
155 Version 5.8.2  [V5-stable] (rgerhards), 2011-06-21
156 - bugfix: problems in failover action handling
157   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=270
158   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=254
159 - bugfix: mutex was invalidly left unlocked during action processing
160   At least one case where this can occur is during thread shutdown, which
161   may be initiated by lower activity. In most cases, this is quite
162   unlikely to happen. However, if it does, data structures may be 
163   corrupted which could lead to fatal failure and segfault. I detected
164   this via a testbench test, not a user report. But I assume that some
165   users may have had unreproducable aborts that were cause by this bug.
166 - bugfix: memory leak in imtcp & subsystems under some circumstances
167   This leak is tied to error conditions which lead to incorrect cleanup
168   of some data structures. [backport from v6]
169 - bugfix/improvement:$WorkDirectory now gracefully handles trailing slashes
170 ---------------------------------------------------------------------------
171 Version 5.8.1  [V5-stable] (rgerhards), 2011-05-19
172 - bugfix: invalid processing in QUEUE_FULL condition
173   If the the multi-submit interface was used and a QUEUE_FULL condition
174   occured, the failed message was properly destructed. However, the
175   rest of the input batch, if it existed, was not processed. So this
176   lead to potential loss of messages and a memory leak. The potential
177   loss of messages was IMHO minor, because they would have been dropped
178   in most cases due to the queue remaining full, but very few lucky ones
179   from the batch may have made it. Anyhow, this has now been changed so
180   that the rest of the batch is properly tried to be enqueued and, if
181   not possible, destructed.
182 - new module mmsnmptrapd, a sample message modification module
183   This can be useful to reformat snmptrapd messages and also serves as
184   a sample for how to write message modification modules using the
185   output module interface. Note that we introduced this new 
186   functionality directly into the stable release, as it does not 
187   modify the core and as such cannot have any side-effects if it is
188   not used (and thus the risk is solely on users requiring that
189   functionality).
190 - bugfix: rate-limiting inside imuxsock did not work 100% correct
191   reason was that a global config variable was invalidly accessed where a
192   listener variable should have been used.
193   Also performance-improved the case when rate limiting is turned off (this
194   is a very unintrusive change, thus done directly to the stable version).
195 - bugfix: $myhostname not available in RainerScript (and no error message)
196   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=233
197 - bugfix: memory and file descriptor leak in stream processing
198   Leaks could occur under some circumstances if the file stream handler
199   errored out during the open call. Among others, this could cause very
200   big memory leaks if there were a problem with unreadable disk queue
201   files. In regard to the memory leak, this
202   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=256
203 - bugfix: doc for impstats had wrong config statements
204   also, config statements were named a bit inconsistent, resolved that
205   problem by introducing an alias and only documenting the consistent
206   statements
207   Thanks to Marcin for bringing up this problem.
208 - bugfix: IPv6-address could not be specified in omrelp
209   this was due to improper parsing of ":"
210   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=250
211 - bugfix: TCP connection invalidly aborted when messages needed to be
212   discarded (due to QUEUE_FULL or similar problem)
213 - bugfix: $LocalHostName was not honored under all circumstances
214   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=258
215 - bugfix(minor): improper template function call in syslogd.c
216 ---------------------------------------------------------------------------
217 Version 5.8.0  [V5-stable] (rgerhards), 2011-04-12
219 This is the new v5-stable branch, importing all feature from the 5.7.x
220 versions. To see what has changed in regard to the previous v5-stable,
221 check the Changelog for 5.7.x below.
223 - bugfix: race condition in deferred name resolution
224   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=238
225   Special thanks to Marcin for his persistence in helping to solve this
226   bug.
227 - bugfix: DA queue was never shutdown once it was started
228   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=241
229 ---------------------------------------------------------------------------
230 Version 5.7.10  [V5-BETA] (rgerhards), 2011-03-29
231 - bugfix: ompgsql did not work properly with ANSI SQL strings
232   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=229
233 - bugfix: rsyslog did not build with --disable-regexp configure option
234   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=243
235 - bugfix: PRI was invalid on Solaris for message from local log socket
236 - enhance: added $BOM system property to ease writing byte order masks
237 - bugfix: RFC5424 parser confused by empty structured data
238   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=237
239 - bugfix: error return from strgen caused abort, now causes action to be
240   ignored (just like a failed filter)
241 - new sample plugin for a strgen to generate sql statement consumable
242   by a database plugin
243 - bugfix: strgen could not be used together with database outputs
244   because the sql/stdsql option could not be specified. This has been
245   solved by permitting the strgen to include the opton inside its name.
246   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=195
247 ---------------------------------------------------------------------------
248 Version 5.7.9  [V5-BETA] (rgerhards), 2011-03-16
249 - improved testbench
250   among others, life tests for ommysql (against a test database) have
251   been added, valgrind-based testing enhanced, ...
252 - enhance: fallback *at runtime* to epoll_create if epoll_create1 is not
253   available. Thanks to Michael Biebl for analysis and patch!
254 - bugfix: failover did not work correctly if repeated msg reduction was on
255   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=236
256   affected directive was: $ActionExecOnlyWhenPreviousIsSuspended on
257 - bugfix: minor memory leak in omlibdbi (< 1k per instance and run)
258 - bugfix: (regression) omhdfs did no longer compile
259 - bugfix: omlibdbi did not use password from rsyslog.conf
260   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=203
261 ---------------------------------------------------------------------------
262 Version 5.7.8  [V5-BETA] (rgerhards), 2011-03-09
263 - systemd support somewhat improved (can now take over existing log sockt)
264 - bugfix: discard action did not work under some circumstances
265   fixes: http://bugzilla.adiscon.com/show_bug.cgi?id=217
266 - bugfix: file descriptor leak in gnutls netstream driver
267   fixes: http://bugzilla.adiscon.com/show_bug.cgi?id=222
268 ---------------------------------------------------------------------------
269 Version 5.7.7  [V5-BETA] (rgerhards), 2011-03-02
270 - bugfix: potential abort condition when $RepeatedMsgReduction set to on
271   as well as potentially in a number of other places where MsgDup() was
272   used. This only happened when the imudp input module was used and it
273   depended on name resolution not yet had taken place. In other words,
274   this was a strange problem that could lead to hard to diagnose 
275   instability. So if you experience instability, chances are good that
276   this fix will help.
277 ---------------------------------------------------------------------------
278 Version 5.7.6  [V5-BETA] (rgerhards), 2011-02-25
279 - bugfix: fixed a memory leak and potential abort condition
280   this could happen if multiple rulesets were used and some output batches
281   contained messages belonging to more than one ruleset.
282   fixes: http://bugzilla.adiscon.com/show_bug.cgi?id=226
283   fixes: http://bugzilla.adiscon.com/show_bug.cgi?id=218
284 - bugfix: memory leak when $RepeatedMsgReduction on was used
285   bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=225
286 ---------------------------------------------------------------------------
287 Version 5.7.5  [V5-BETA] (rgerhards), 2011-02-23
288 - enhance: imfile did not yet support multiple rulesets, now added
289   we do this directly in the beta because a) it does not affect existing
290   functionality and b) one may argue that this missing functionality is
291   close to a bug.
292 - improved testbench, added tests for imuxsock
293 - bugfix: imuxsock did no longer sanitize received messages
294   This was a regression from the imuxsock partial rewrite. Happened
295   because the message is no longer run through the standard parsers. 
296   bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=224
297 - bugfix: minor race condition in action.c - considered cosmetic
298   This is considered cosmetic as multiple threads tried to write exactly
299   the same value into the same memory location without sync. The method
300   has been changed so this can no longer happen.
301 ---------------------------------------------------------------------------
302 Version 5.7.4  [V5-BETA] (rgerhards), 2011-02-17
303 - added pmsnare parser module (written by David Lang)
304 - enhanced imfile to support non-cancel input termination
305 - improved systemd socket activation thanks to Marius Tomaschweski
306 - improved error reporting for $WorkDirectory
307   non-existance and other detectable problems are now reported,
308   and the work directory is NOT set in this case
309 - bugfix: pmsnare causded abort under some conditions
310 - bugfix: abort if imfile reads file line of more than 64KiB
311   Thanks to Peter Eisentraut for reporting and analysing this problem.
312   bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=221
313 - bugfix: queue engine did not properly slow down inputs in FULL_DELAY mode
314   when in disk-assisted mode. This especially affected imfile, which
315   created unnecessarily queue files if a large set of input file data was
316   to process.
317 - bugfix: very long running actions could prevent shutdown under some
318   circumstances. This has now been solved, at least for common
319   situations.
320 - bugfix: fixed compile problem due to empty structs
321   this occured only on some platforms/compilers. thanks to Dražen Kačar 
322   for the fix
323 ---------------------------------------------------------------------------
324 Version 5.7.3  [V5-BETA] (rgerhards), 2011-02-07
325 - added support for processing multi-line messages in imfile
326 - added $IMUDPSchedulingPolicy and $IMUDPSchedulingPriority config settings
327 - added $LocalHostName config directive
328 - bugfix: fixed build problems on some platforms
329   namely those that have 32bit atomic operations but not 64 bit ones
330 - bugfix: local hostname was pulled too-early, so that some config 
331   directives (namely FQDN settings) did not have any effect
332 - bugfix: imfile did duplicate messages under some circumstances
333 - added $OMMySQLConfigFile config directive
334 - added $OMMySQLConfigSection config directive
335 ---------------------------------------------------------------------------
336 Version 5.7.2  [V5-DEVEL] (rgerhards), 2010-11-26
337 - bugfix(important): problem in TLS handling could cause rsyslog to loop
338   in a tight loop, effectively disabling functionality and bearing the
339   risk of unresponsiveness of the whole system.
340   Bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=194
341 - bugfix: imfile state file was not written when relative file name
342   for it was specified
343 - bugfix: compile failed on systems without epoll_create1()
344   Thanks to David Hill for providing a fix.
345 - bugfix: atomic increment for msg object may not work correct on all
346   platforms. Thanks to Chris Metcalf for the patch
347 - bugfix: replacements for atomic operations for non-int sized types had
348   problems. At least one instance of that problem could potentially lead
349   to abort (inside omfile).
350 ---------------------------------------------------------------------------
351 Version 5.7.1  [V5-DEVEL] (rgerhards), 2010-10-05
352 - support for Hadoop's HDFS added (via omhdfs)
353 - imuxsock now optionally use SCM_CREDENTIALS to pull the pid from the log
354   socket itself
355   (thanks to Lennart Poettering for the suggesting this feature)
356 - imuxsock now optionally uses per-process input rate limiting, guarding the
357   user against processes spamming the system log
358   (thanks to Lennart Poettering for suggesting this feature)
359 - added new config statements
360   * $InputUnixListenSocketUsePIDFromSystem 
361   * $SystemLogUsePIDFromSystem 
362   * $SystemLogRateLimitInterval
363   * $SystemLogRateLimitBurst
364   * $SystemLogRateLimitSeverity
365   * $IMUxSockRateLimitInterval
366   * $IMUxSockRateLimitBurst
367   * $IMUxSockRateLimitSeverity
368 - imuxsock now supports up to 50 different sockets for input
369 - some code cleanup in imuxsock (consider this a release a major
370   modification, especially if problems show up)
371 - bugfix: /dev/log was unlinked even when passed in from systemd
372   in which case it should be preserved as systemd owns it
373 ---------------------------------------------------------------------------
374 Version 5.7.0  [V5-DEVEL] (rgerhards), 2010-09-16
375 - added module impstat to emit periodic statistics on rsyslog counters
376 - support for systemd officially added
377   * acquire /dev/log socket optionally from systemd
378     thanks to Lennart Poettering for this patch
379   * sd-systemd API added as part of rsyslog runtime library
380 ---------------------------------------------------------------------------
381 Version 5.6.5  [V5-STABLE] (rgerhards), 2011-03-22
382 - bugfix: failover did not work correctly if repeated msg reduction was on
383   affected directive was: $ActionExecOnlyWhenPreviousIsSuspended on
384   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=236
385 - bugfix: omlibdbi did not use password from rsyslog.con
386   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=203
387 - bugfix(kind of): tell users that config graph can currently not be
388   generated
389   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=232
390 - bugfix: discard action did not work under some circumstances
391   fixes: http://bugzilla.adiscon.com/show_bug.cgi?id=217
392   (backport from 5.7.8)
393 ---------------------------------------------------------------------------
394 Version 5.6.4  [V5-STABLE] (rgerhards), 2011-03-03
395 - bugfix: potential abort condition when $RepeatedMsgReduction set to on
396   as well as potentially in a number of other places where MsgDup() was
397   used. This only happened when the imudp input module was used and it
398   depended on name resolution not yet had taken place. In other words,
399   this was a strange problem that could lead to hard to diagnose 
400   instability. So if you experience instability, chances are good that
401   this fix will help.
402 - bugfix: fixed a memory leak and potential abort condition
403   this could happen if multiple rulesets were used and some output batches
404   contained messages belonging to more than one ruleset.
405   fixes: http://bugzilla.adiscon.com/show_bug.cgi?id=226
406   fixes: http://bugzilla.adiscon.com/show_bug.cgi?id=218
407 - bugfix: memory leak when $RepeatedMsgReduction on was used
408   bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=225
409 ---------------------------------------------------------------------------
410 Version 5.6.3  [V5-STABLE] (rgerhards), 2011-01-26
411 - bugfix: action processor released memory too early, resulting in
412   potential issue in retry cases (but very unlikely due to another
413   bug, which I also fixed -- only after the fix this problem here
414   became actually visible).
415 - bugfix: batch processing flagged invalid message as "bad" under some
416   circumstances
417 - bugfix: unitialized variable could cause issues under extreme conditions
418   plus some minor nits. This was found after a clang static code analyzer
419   analysis (great tool, and special thanks to Marcin for telling me about
420   it!)
421 - bugfix: batches which had actions in error were not properly retried in
422   all cases
423 - bugfix: imfile did duplicate messages under some circumstances
424 - bugfix: testbench was not activated if no Java was present on system
425   ... what actually was a left-over. Java is no longer required.
426 ---------------------------------------------------------------------------
427 Version 5.6.2  [V5-STABLE] (rgerhards), 2010-11-30
428 - bugfix: compile failed on systems without epoll_create1()
429   Thanks to David Hill for providing a fix.
430 - bugfix: atomic increment for msg object may not work correct on all
431   platforms. Thanks to Chris Metcalf for the patch
432 - bugfix: replacements for atomic operations for non-int sized types had
433   problems. At least one instance of that problem could potentially lead
434   to abort (inside omfile).
435 - added the $InputFilePersistStateInterval config directive to imfile
436 - changed imfile so that the state file is never deleted (makes imfile
437   more robust in regard to fatal failures)
438 - bugfix: a slightly more informative error message when a TCP
439   connections is aborted
440 ---------------------------------------------------------------------------
441 Version 5.6.1  [V5-STABLE] (rgerhards), 2010-11-24
442 - bugfix(important): problem in TLS handling could cause rsyslog to loop
443   in a tight loop, effectively disabling functionality and bearing the
444   risk of unresponsiveness of the whole system.
445   Bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=194
446 - permitted imptcp to work on systems which support epoll(), but not
447   epoll_create().
448   Bug: http://bugzilla.adiscon.com/show_bug.cgi?id=204
449   Thanks to Nicholas Brink for reporting this problem.
450 - bugfix: testbench failed if imptcp was not enabled
451 - bugfix: segfault when an *empty* template was used
452   Bug: http://bugzilla.adiscon.com/show_bug.cgi?id=206
453   Thanks to David Hill for alerting us.
454 - bugfix: compile failed with --enable-unlimited-select
455   thanks varmojfekoj for the patch
456 ---------------------------------------------------------------------------
457 Version 5.6.0  [V5-STABLE] (rgerhards), 2010-10-19
459 This release brings all changes and enhancements of the 5.5.x series
460 to the v5-stable branch.
462 - bugfix: a couple of problems that imfile had on some platforms, namely
463   Ubuntu (not their fault, but occured there)
464 - bugfix: imfile utilizes 32 bit to track offset. Most importantly,
465   this problem can not experienced on Fedora 64 bit OS (which has
466   64 bit long's!)
467 ---------------------------------------------------------------------------
468 Version 5.5.7  [V5-BETA] (rgerhards), 2010-08-09
469 - changed omudpspoof default spoof address to simplify typical use case
470   thanks to David Lang for suggesting this
471 - doc bugfix: pmlastmsg doc samples had errors
472 - bugfix[minor]: pmrfc3164sd had invalid name (resided in rsyslog name 
473   space, what should not be the case for a contributed module)
474 - added omuxsock, which permits to write message to local Unix sockets
475   this is the counterpart to imuxsock, enabling fast local forwarding
476 ---------------------------------------------------------------------------
477 Version 5.5.6  [DEVEL] (rgerhards), 2010-07-21
478 - added parser modules
479   * pmlastmsg, which supports the notoriously malformed "last message
480     repeated n times" messages from some syslogd's (namely sysklogd)
481   * pmrfc3164sd (contributed), supports RFC5424 structured data in 
482     RFC3164 messages [untested]
483 - added new module type "string generator", used to speed up output
484   processing. Expected speedup for (typical) rsyslog processing is
485   roughly 5 to 6 percent compared to using string-based templates.
486   They may also be used to do more complex formatting with custom
487   C code, what provided greater flexibility and probably far higher
488   speed, for example if using multiple regular expressions within a 
489   template.
490 - added 4 string generators for
491   * RSYSLOG_FileFormat
492   * RSYSLOG_TraditionalFileFormat
493   * RSYSLOG_ForwardFormat
494   * RSYSLOG_TraditionalForwardFormat
495 - bugfix: mutexes used to simulate atomic instructions were not destructed
496 - bugfix: regression caused more locking action in msg.c than necessary
497 - bugfix: "$ActionExecOnlyWhenPreviousIsSuspended on" was broken
498 - bugfix: segfault on HUP when "HUPIsRestart" was set to "on"
499   thanks varmojfekoj for the patch
500 - bugfix: default for $OMFileFlushOnTXEnd was wrong ("off").
501   This, in default mode, caused buffered writing to be used, what
502   means that it looked like no output were written or partial
503   lines. Thanks to Michael Biebl for pointing out this bug.
504 - bugfix: programname filter in ! configuration can not be reset
505   Thanks to Kiss Gabor for the patch.
506 ---------------------------------------------------------------------------
507 Version 5.5.5  [DEVEL] (rgerhards), 2010-05-20
508 - added new cancel-reduced action thread termination method
509   We now manage to cancel threads that block inside a retry loop to
510   terminate without the need to cancel the thread. Avoiding cancellation
511   helps keep the system complexity minimal and thus provides for better
512   stability. This also solves some issues with improper shutdown when
513   inside an action retry loop.
514 ---------------------------------------------------------------------------
515 Version 5.5.4  [DEVEL] (rgerhards), 2010-05-03
516 - This version offers full support for Solaris on Intel and Sparc
517 - bugfix: problems with atomic operations emulation
518   replaced atomic operation emulation with new code. The previous code
519   seemed to have some issue and also limited concurrency severely. The
520   whole atomic operation emulation has been rewritten.
521 - bugfix: netstream ptcp support class was not correctly build on systems
522   without epoll() support
523 - bugfix: segfault on Solaris/Sparc
524 ---------------------------------------------------------------------------
525 Version 5.5.3  [DEVEL] (rgerhards), 2010-04-09
526 - added basic but functional support for Solaris
527 - imported many bugfixes from 3.6.2/4.6.1 (see ChangeLog below!)
528 - added new property replacer option "date-rfc3164-buggyday" primarily
529   to ease migration from syslog-ng. See property replacer doc for
530   details.
531 - added capability to turn off standard LF delimiter in TCP server
532   via new directive "$InputTCPServerDisableLFDelimiter on"
533 - bugfix: failed to compile on systems without epoll support
534 - bugfix: comment char ('#') in literal terminated script parsing
535   and thus could not be used.
536   but tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=119
537   [merged in from v3.22.2]
538 - imported patches from 4.6.0:
539   * improved testbench to contain samples for totally malformed messages
540     which miss parts of the message content
541   * bugfix: some malformed messages could lead to a missing LF inside files
542     or some other missing parts of the template content.
543   * bugfix: if a message ended immediately with a hostname, the hostname
544     was mistakenly interpreted as TAG, and localhost be used as hostname
545 ---------------------------------------------------------------------------
546 Version 5.5.2  [DEVEL] (rgerhards), 2010-02-05
547 - applied patches that make rsyslog compile under Apple OS X.
548   Thanks to trey for providing these.
549 - replaced data type "bool" by "sbool" because this created some
550   portability issues.
551 - added $Escape8BitCharactersOnReceive directive
552   Thanks to David Lang for suggesting it.
553 - worked around an issue where omfile failed to compile on 32 bit platforms
554   under some circumstances (this smells like a gcc problem, but a simple
555   solution was available). Thanks to Kenneth Marshall for some advice.
556 - extended testbench
557 ---------------------------------------------------------------------------
558 Version 5.5.1  [DEVEL] (rgerhards), 2009-11-27
559 - introduced the ablity for netstream drivers to utilize an epoll interface
560   This offers increased performance and removes the select() FDSET size
561   limit from imtcp. Note that we fall back to select() if there is no
562   epoll netstream drivers. So far, an epoll driver has only been
563   implemented for plain tcp syslog, the rest will follow once the code
564   proves well in practice AND there is demand.
565 - re-implemented $EscapeControlCharacterTab config directive
566   Based on Jonathan Bond-Caron's patch for v4. This now also includes some
567   automatted tests.
568 - bugfix: enabling GSSServer crashes rsyslog startup
569   Thanks to Tomas Kubina for the patch [imgssapi]
570 - bugfix (kind of): check if TCP connection is still alive if using TLS
571   Thanks to Jonathan Bond-Caron for the patch.
572 ---------------------------------------------------------------------------
573 Version 5.5.0  [DEVEL] (rgerhards), 2009-11-18
574 - moved DNS resolution code out of imudp and into the backend processing
575   Most importantly, DNS resolution now never happens if the resolved name
576   is not required. Note that this applies to imudp - for the other inputs,
577   DNS resolution almost comes for free, so we do not do it there. However,
578   the new method has been implemented in a generic way and as such may 
579   also be used by other modules in the future.
580 - added option to use unlimited-size select() calls
581   Thanks to varmjofekoj for the patch
582   This is not done in imudp, as it natively supports epoll().
583 - doc: improved description of what loadable modules can do
584 ---------------------------------------------------------------------------
585 Version 5.4.2  [v5-stable] (rgerhards), 2010-03-??
586 - bugfix(kind of): output plugin retry behaviour could cause engine to loop
587   The rsyslog engine did not guard itself against output modules that do
588   not properly convey back the tryResume() behaviour. This then leads to
589   what looks like an endless loop. I consider this to be a bug of the 
590   engine not only because it should be hardened against plugin misbehaviour,
591   but also because plugins may not be totally able to avoid this situation
592   (depending on the type of and processing done by the plugin).
593 - bugfix: testbench failed when not executed in UTC+1 timezone
594   accidently, the time zone information was kept inside some
595   to-be-checked-for responses
596 - temporary bugfix replaced by permanent one for
597   message-induced off-by-one error (potential segfault) (see 4.6.2)
598   The analysis has been completed and a better fix been crafted and 
599   integrated.
600 - bugfix(minor): status variable was uninitialized
601   However, this would have caused harm only if NO parser modules at
602   all were loaded, which would lead to a defunctional configuration
603   at all. And, even more important, this is impossible as two parser
604   modules are built-in and thus can not be "not loaded", so we always
605   have a minimum of two.
606 ---------------------------------------------------------------------------
607 Version 5.4.1  [v5-stable] (rgerhards), 2010-03-??
608 - added new property replacer option "date-rfc3164-buggyday" primarily
609   to ease migration from syslog-ng. See property replacer doc for
610   details. [backport from 5.5.3 because urgently needed by some]
611 - imported all bugfixes vom 4.6.2 (see below)
612 ---------------------------------------------------------------------------
613 Version 5.4.0  [v5-stable] (rgerhards), 2010-03-08
614 ***************************************************************************
615 * This is a new stable v5 version. It contains all fixes and enhancements *
616 * made during the 5.3.x phase as well as those listed below.              *
617 * Note that the 5.2.x series was quite buggy and as such all users are    *
618 * strongly advised to upgrade to 5.4.0.                                   *
619 ***************************************************************************
620 - bugfix: omruleset failed to work in many cases
621   bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=179
622   Thanks to Ryan B. Lynch for reporting this issue.
623 - bugfix: comment char ('#') in literal terminated script parsing
624   and thus could not be used.
625   but tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=119
626   [merged in from v3.22.2]
627 ---------------------------------------------------------------------------
628 Version 5.3.7  [BETA] (rgerhards), 2010-01-27
629 - bugfix: queues in direct mode could case a segfault, especially if an
630   action failed for action queues. The issue was an invalid increment of
631   a stack-based pointer which lead to destruction of the stack frame and
632   thus a segfault on function return.
633   Thanks to Michael Biebl for alerting us on this problem.
634 - bugfix: hostname accidently set to IP address for some message sources,
635   for example imudp. Thanks to Anton for reporting this bug. [imported v4]
636 - bugfix: ompgsql had problems with transaction support, what actually 
637   rendered it unsuable. Thanks to forum user "horhe" for alerting me
638   on this bug and helping to debug/fix it! [imported from 5.3.6]
639 - bugfix: $CreateDirs variable not properly initialized, default thus
640   was random (but most often "on") [imported from v3]
641 - bugfix: potential segfaults during queue shutdown
642   (bugs require certain non-standard settings to appear)
643   Thanks to varmojfekoj for the patch [imported from 4.5.8]
644   [backport from 5.5.2]
645 - bugfix: wrong memory assignment for a config variable (probably
646   without causing any harm) [backport from 5.2.2]
647 - bugfix: rsyslog hangs when writing to a named pipe which nobody was
648   reading. Thanks to Michael Biebl for reporting this bug.
649   Bugzilla entry: http://bugzilla.adiscon.com/show_bug.cgi?id=169
650   [imported from 4.5.8]
651 ---------------------------------------------------------------------------
652 Version 5.3.6  [BETA] (rgerhards), 2010-01-13
653 - bugfix: ompgsql did not properly check the server connection in
654   tryResume(), which could lead to rsyslog running in a thight loop
655 - bugfix: suspension during beginTransaction() was not properly handled
656   by rsyslog core
657 - bugfix: omfile output was only written when buffer was full, not at
658   end of transaction
659 - bugfix: commit transaction was not properly conveyed to message layer,
660   potentially resulting in non-message destruction and thus hangs
661 - bugfix: enabling GSSServer crashes rsyslog startup
662   Thanks to Tomas Kubina for the patch [imgssapi]
663 - bugfix (kind of): check if TCP connection is still alive if using TLS
664   Thanks to Jonathan Bond-Caron for the patch.
665 - bugfix: $CreateDirs variable not properly initialized, default thus
666   was random (but most often "on") [imported from v3]
667 - bugfix: ompgsql had problems with transaction support, what actually 
668   rendered it unsuable. Thanks to forum user "horhe" for alerting me
669   on this bug and helping to debug/fix it!
670 - bugfix: memory leak when sending messages in zip-compressed format
671   Thanks to Naoya Nakazawa for analyzing this issue and providing a patch.
672 - worked around an issue where omfile failed to compile on 32 bit platforms
673   under some circumstances (this smells like a gcc problem, but a simple
674   solution was available). Thanks to Kenneth Marshall for some advice.
675   [backported from 5.5.x branch]
676 ---------------------------------------------------------------------------
677 Version 5.3.5  [BETA] (rgerhards), 2009-11-13
678 - some light performance enhancement by replacing time() call with much
679   faster (at least under linux) gettimeofday() calls.
680 - some improvement of omfile performance with dynafiles
681   saved costly time() calls by employing a logical clock, which is 
682   sufficient for the use case
683 - bugfix: omudpspoof miscalculated source and destination ports
684   while this was probably not noticed for source ports, it resulted in
685   almost all destination ports being wrong, except for the default port
686   of 514, which by virtue of its binary representation was calculated 
687   correct (and probably thus the bug not earlier detected).
688 - bugfixes imported from earlier releases
689   * bugfix: named pipes did no longer work (they always got an open error)
690     this was a regression from the omfile rewrite in 4.5.0
691   * bugfix(testbench): sequence check was not always performed correctly,
692     that could result in tests reporting success when they actually failed
693 - improved testbench: added tests for UDP forwarding and omudpspoof
694 - doc bugfix: omudpspoof had wrong config command names ("om" missing)
695 - bugfix [imported from 4.4.3]: $ActionExecOnlyOnceEveryInterval did
696   not work.
697 - [inport v4] improved testbench, contains now tcp and gzip test cases
698 - [import v4] added a so-called "On Demand Debug" mode, in which debug
699   output can be generated only after the process has started, but not right
700   from the beginning. This is assumed to be useful for hard-to-find bugs.
701   Also improved the doc on the debug system.
702 - bugfix: segfault on startup when -q or -Q option was given
703   [imported from v3-stable]
704 ---------------------------------------------------------------------------
705 Version 5.3.4  [DEVEL] (rgerhards), 2009-11-04
706 - added the ability to create custom message parsers
707 - added $RulesetParser config directive that permits to bind specific
708   parsers to specific rulesets
709 - added omruleset output module, which provides great flexibility in 
710   action processing. THIS IS A VERY IMPORTANT ADDITION, see its doc
711   for why.
712 - added the capability to have ruleset-specific main message queues
713   This offers considerable additional flexibility AND superior performance
714   (in cases where multiple inputs now can avoid lock contention)
715 - bugfix: correct default for escape ('#') character restored
716   This was accidently changed to '\\', thanks to David Lang for reporting
717 - bugfix(testbench): testcase did not properly wait for rsyslogd shutdown
718   thus some unpredictable behavior and a false negative test result
719   could occur.
720 ---------------------------------------------------------------------------
721 Version 5.3.3  [DEVEL] (rgerhards), 2009-10-27
722 - simplified and thus speeded up the queue engine, also fixed some
723   potential race conditions (in very unusual shutdown conditions)
724   along the way. The threading model has seriously changes, so there may
725   be some regressions.
726 - enhanced test environment (inlcuding testbench): support for enhancing
727   probability of memory addressing failure by using non-NULL default
728   value for malloced memory (optional, only if requested by configure
729   option). This helps to track down some otherwise undetected issues
730   within the testbench.
731 - bugfix: potential abort if inputname property was not set 
732   primarily a problem of imdiag
733 - bugfix: message processing states were not set correctly in all cases
734   however, this had no negative effect, as the message processing state
735   was not evaluated when a batch was deleted, and that was the only case
736   where the state could be wrong.
737 ---------------------------------------------------------------------------
738 Version 5.3.2  [DEVEL] (rgerhards), 2009-10-21
739 - enhanced omfile to support transactional interface. This will increase
740   performance in many cases.
741 - added multi-ruleset support to imudp
742 - re-enabled input thread termination handling that does avoid thread
743   cancellation where possible. This provides a more reliable mode of
744   rsyslogd termination (canceling threads my result in not properly
745   freed resouces and potential later hangs, even though we perform
746   proper cancel handling in our code). This is part of an effort to
747   reduce thread cancellation as much as possible in rsyslog.
748   NOTE: the code previously written code for this functionality had a
749   subtle race condition. The new code solves that.
750 - enhanced immark to support non-cancel input module termination
751 - improved imudp so that epoll can be used in more environments,
752   fixed potential compile time problem if EPOLL_CLOEXEC is not available.
753 - some cleanup/slight improvement:
754   * changed imuxsock to no longer use deprecated submitAndParseMsg() IF
755   * changed submitAndParseMsg() interface to be a wrapper around the new
756     way of message creation/submission. This enables older plugins to be
757     used together with the new interface. The removal also enables us to
758     drop a lot of duplicate code, reducing complexity and increasing
759     maintainability.
760 - bugfix: segfault when starting up with an invalid .qi file for a disk queue
761   Failed for both pure disk as well as DA queues. Now, we emit an error
762   message and disable disk queueing facility.
763 - bugfix: potential segfault on messages with empty MSG part. This was a
764   recently introduced regression.
765 - bugfix: debug string larger than 1K were improperly displayed. Max size
766   is now 32K, and if a string is even longer it is meaningfully truncated.
767 ---------------------------------------------------------------------------
768 Version 5.3.1  [DEVEL] (rgerhards), 2009-10-05
769 - added $AbortOnUncleanConfig directive - permits to prevent startup when
770   there are problems with the configuration file. See it's doc for
771   details.
772 - included some important fixes from v4-stable:
773   * bugfix: invalid handling of zero-sized messages
774   * bugfix: zero-sized UDP messages are no longer processed
775   * bugfix: random data could be appended to message
776   * bugfix: reverse lookup reduction logic in imudp do DNS queries too often
777 - bugfixes imported from 4.5.4:
778   * bugfix: potential segfault in stream writer on destruction
779   * bugfix: potential race in object loader (obj.c) during use/release
780   * bugfixes: potential problems in out file zip writer
781 ---------------------------------------------------------------------------
782 Version 5.3.0  [DEVEL] (rgerhards), 2009-09-14
783 - begun to add simple GUI programs to gain insight into running rsyslogd
784   instances and help setup and troubleshooting (active via the
785   --enable-gui ./configure switch)
786 - changed imudp to utilize epoll(), where available. This shall provide
787   slightly better performance (just slightly because we called select()
788   rather infrequently on a busy system)
789 ---------------------------------------------------------------------------
790 Version 5.2.2  [v5-stable] (rgerhards), 2009-11-??
791 - bugfix: enabling GSSServer crashes rsyslog startup
792   Thanks to Tomas Kubina for the patch [imgssapi]
793 ---------------------------------------------------------------------------
794 Version 5.2.1  [v5-stable] (rgerhards), 2009-11-02
795 - bugfix [imported from 4.4.3]: $ActionExecOnlyOnceEveryInterval did
796   not work.
797 - bugfix: segfault on startup when -q or -Q option was given
798   [imported from v3-stable]
799 ---------------------------------------------------------------------------
800 Version 5.2.0  [v5-stable] (rgerhards), 2009-11-02
801 This is a re-release of version 5.1.6 as stable after we did not get any bug 
802 reports during the whole beta phase. Still, this first v5-stable may not be 
803 as stable as one hopes for, I am not sure if we did not get bug reports
804 just because nobody tried it. Anyhow, we need to go forward and so we
805 have the initial v5-stable.
806 ---------------------------------------------------------------------------
807 Version 5.1.6  [v5-beta] (rgerhards), 2009-10-15
808 - feature imports from v4.5.6
809 - bugfix: potential race condition when queue worker threads were
810   terminated
811 - bugfix: solved potential (temporary) stall of messages when the queue was
812   almost empty and few new data added (caused testbench to sometimes hang!)
813 - fixed some race condition in testbench
814 - added more elaborate diagnostics to parts of the testbench
815 - bugfixes imported from 4.5.4:
816   * bugfix: potential segfault in stream writer on destruction
817   * bugfix: potential race in object loader (obj.c) during use/release
818   * bugfixes: potential problems in out file zip writer
819 - included some important fixes from 4.4.2:
820   * bugfix: invalid handling of zero-sized messages
821   * bugfix: zero-sized UDP messages are no longer processed
822   * bugfix: random data could be appended to message
823   * bugfix: reverse lookup reduction logic in imudp do DNS queries too often
824 ---------------------------------------------------------------------------
825 Version 5.1.5  [v5-beta] (rgerhards), 2009-09-11
826 - added new config option $ActionWriteAllMarkMessages
827   this option permites to process mark messages under all circumstances,
828   even if an action was recently called. This can be useful to use mark
829   messages as a kind of heartbeat.
830 - added new config option $InputUnixListenSocketCreatePath
831   to permit the auto-creation of pathes to additional log sockets. This
832   turns out to be useful if they reside on temporary file systems and
833   rsyslogd starts up before the daemons that create these sockets
834   (rsyslogd always creates the socket itself if it does not exist).
835 - added $LogRSyslogStatusMessages configuration directive
836   permitting to turn off rsyslog start/stop/HUP messages. See Debian
837   ticket http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=463793
838 - bugfix: hostnames with dashes in them were incorrectly treated as
839   malformed, thus causing them to be treated as TAG (this was a regression
840   introduced from the "rfc3164 strict" change in 4.5.0). Testbench has been
841   updated to include a smaple message with a hostname containing a dash.
842 - bugfix: strings improperly reused, resulting in some message properties
843   be populated with strings from previous messages. This was caused by
844   an improper predicate check.
845 - added new config directive $omfileForceChown [import from 4.7.0]
846 ---------------------------------------------------------------------------
847 Version 5.1.4  [DEVEL] (rgerhards), 2009-08-20
848 - legacy syslog parser changed so that it now accepts date stamps in
849   wrong case. Some devices seem to create them and I do not see any harm
850   in supporting that.
851 - added $InputTCPMaxListeners directive - permits to specify how many 
852   TCP servers shall be possible (default is 20).
853 - bugfix: memory leak with some input modules. Those inputs that
854   use parseAndSubmitMsg() leak two small memory blocks with every message.
855   Typically, those process only relatively few messages, so the issue 
856   does most probably not have any effect in practice.
857 - bugfix: if tcp listen port could not be created, no error message was
858   emitted
859 - bugfix: discard action did not work (did not discard messages)
860 - bugfix: discard action caused segfault
861 - bugfix: potential segfault in output file writer (omfile)
862   In async write mode, we use modular arithmetic to index the output
863   buffer array. However, the counter variables accidently were signed,
864   thus resulting in negative indizes after integer overflow. That in turn
865   could lead to segfaults, but was depending on the memory layout of 
866   the instance in question (which in turn depended on a number of
867   variables, like compile settings but also configuration). The counters
868   are now unsigned (as they always should have been) and so the dangling
869   mis-indexing does no longer happen. This bug potentially affected all
870   installations, even if only some may actually have seen a segfault.
871 ---------------------------------------------------------------------------
872 Version 5.1.3  [DEVEL] (rgerhards), 2009-07-28
873 - architecture change: queue now always has at least one worker thread
874   if not running in direct mode. Previous versions could run without 
875   any active workers. This simplifies the code at a very small expense.
876   See v5 compatibility note document for more in-depth discussion.
877 - enhance: UDP spoofing supported via new output module omudpspoof
878   See the omudpspoof documentation for details and samples
879 - bugfix: message could be truncated after TAG, often when forwarding
880   This was a result of an internal processing error if maximum field
881   sizes had been specified in the property replacer.
882 - bugfix: minor static memory leak while reading configuration
883   did NOT leak based on message volume
884 - internal: added ability to terminate input modules not via pthread_cancel
885   but an alternate approach via pthread_kill. This is somewhat safer as we
886   do not need to think about the cancel-safeness of all libraries we use.
887   However, not all inputs can easily supported, so this now is a feature
888   that can be requested by the input module (the most important ones
889   request it).
890 ---------------------------------------------------------------------------
891 Version 5.1.2  [DEVEL] (rgerhards), 2009-07-08
892 - bugfix: properties inputname, fromhost, fromhost-ip, msg were lost when
893   working with disk queues
894 - some performance enhancements
895 - bugfix: abort condition when RecvFrom was not set and message reduction
896   was on. Happend e.g. with imuxsock.
897 - added $klogConsoleLogLevel directive which permits to set a new
898   console log level while rsyslog is active
899 - some internal code cleanup
900 ---------------------------------------------------------------------------
901 Version 5.1.1  [DEVEL] (rgerhards), 2009-07-03
902 - bugfix: huge memory leak in queue engine (made rsyslogd unusable in
903   production). Occured if at least one queue was in direct mode 
904   (the default for action queues)
905 - imported many performance optimizations from v4-devel (4.5.0)
906 - bugfix: subtle (and usually irrelevant) issue in timout processing
907   timeout could be one second too early if nanoseconds wrapped
908 - set a more sensible timeout for shutdow, now 1.5 seconds to complete
909   processing (this also removes those cases where the shutdown message
910   was not written because the termination happened before it)
911 ---------------------------------------------------------------------------
912 Version 5.1.0  [DEVEL] (rgerhards), 2009-05-29
914 *********************************** NOTE **********************************
915 The v5 versions of rsyslog feature a greatly redesigned queue engine. The
916 major theme for the v5 release is twofold:
918 a) greatly improved performance
919 b) enable audit-grade processing
921 Here, audit-grade processing means that rsyslog, if used together with
922 audit-grade transports and configured correctly, will never lose messages
923 that already have been acknowledged, not even in fatal failure cases like
924 sudden loss of power.
926 Note that large parts of rsyslog's important core components have been
927 restructured to support these design goals. As such, early versions of
928 the engine will probably be less stable than the v3/v4 engine.
930 Also note that the initial versions do not cover all and everything. As
931 usual, the code will evolve toward the final goal as version numbers
932 increase.
933 *********************************** NOTE **********************************
935 - redesigned queue engine so that it supports ultra-reliable operations
936   This resulted in a rewrite of large parts. The new capability can be
937   used to build audit-grade systems on the basis of rsyslog.
938 - added $MainMsgQueueDequeueBatchSize and $ActionQueueDequeueBatchSize 
939   configuration directives
940 - implemented a new transactional output module interface which provides
941   superior performance (for databases potentially far superior performance)
942 - increased ompgsql performance by adapting to new transactional
943   output module interface
944 ---------------------------------------------------------------------------
945 Version 4.8.1  [v4-beta], 2011-09-??
946 - bugfix: $ActionExecOnlyOnce interval did not work properly
947   Thanks to Tomas Heinrich for the patch
948 - bugfix: potential abort if ultra-large file io buffers are used and
949   dynafile cache exhausts address space (primarily a problem on 32 bit
950   platforms)
951 ---------------------------------------------------------------------------
952 Version 4.8.0  [v4-stable] (rgerhards), 2011-09-07
953 ***************************************************************************
954 * This is a new stable v4 version. It contains all fixes and enhancements *
955 * made during the 4.7.x phase as well as those listed below.              *
956 * Note: major new development to v4 is concluded  and will only be done   *
957 *       for custom projects.                                              *
958 ***************************************************************************
959 There are no changes compared to 4.7.5, just a re-release with the new
960 version number as new v4-stable. The most important new feature is Solaris
961 support.
962 ---------------------------------------------------------------------------
963 Version 4.7.5  [v4-beta], 2011-09-01
964 - bugfix/security: off-by-two bug in legacy syslog parser, CVE-2011-3200
965 - bugfix: potential misadressing in property replacer
966 - bugfix: The NUL-Byte for the syslogtag was not copied in MsgDup (msg.c)
967 ---------------------------------------------------------------------------
968 Version 4.7.4  [v4-beta] (rgerhards), 2011-07-11
969 - added support for the ":omusrmsg:" syntax in configuring user messages
970 - added support for the ":omfile:" syntax in configuring user messages
971 - added $LocalHostName config directive
972 - bugfix: PRI was invalid on Solaris for message from local log socket
973 Version 4.7.3  [v4-devel] (rgerhards), 2010-11-25
974 - added omuxsock, which permits to write message to local Unix sockets
975   this is the counterpart to imuxsock, enabling fast local forwarding
976 - added imptcp, a simplified, Linux-specific and potentielly fast
977   syslog plain tcp input plugin (NOT supporting TLS!)
978 - bugfix: a couple of problems that imfile had on some platforms, namely
979   Ubuntu (not their fault, but occured there)
980 - bugfix: imfile utilizes 32 bit to track offset. Most importantly,
981   this problem can not experienced on Fedora 64 bit OS (which has
982   64 bit long's!)
983 - added the $InputFilePersistStateInterval config directive to imfile
984 - changed imfile so that the state file is never deleted (makes imfile
985   more robust in regard to fatal failures)
986 ---------------------------------------------------------------------------
987 Version 4.7.2  [v4-devel] (rgerhards), 2010-05-03
988 - bugfix: problems with atomic operations emulaton
989   replaced atomic operation emulation with new code. The previous code
990   seemed to have some issue and also limited concurrency severely. The
991   whole atomic operation emulation has been rewritten.
992 - added new $Sleep directive to hold processing for a couple of seconds
993   during startup
994 - bugfix: programname filter in ! configuration can not be reset
995   Thanks to Kiss Gabor for the patch.
996 ---------------------------------------------------------------------------
997 Version 4.7.1  [v4-devel] (rgerhards), 2010-04-22
998 - Solaris support much improved -- was not truely usable in 4.7.0
999   Solaris is no longer supported in imklog, but rather there is a new
1000   plugin imsolaris, which is used to pull local log sources on a Solaris
1001   machine.
1002 - testbench improvement: Java is no longer needed for testing tool creation
1003 ---------------------------------------------------------------------------
1004 Version 4.7.0  [v4-devel] (rgerhards), 2010-04-14
1005 - new: support for Solaris added (but not yet the Solaris door API)
1006 - added function getenv() to RainerScript
1007 - added new config option $InputUnixListenSocketCreatePath
1008   to permit the auto-creation of pathes to additional log sockets. This
1009   turns out to be useful if they reside on temporary file systems and
1010   rsyslogd starts up before the daemons that create these sockets
1011   (rsyslogd always creates the socket itself if it does not exist).
1012 - added $LogRSyslogStatusMessages configuration directive
1013   permitting to turn off rsyslog start/stop/HUP messages. See Debian
1014   ticket http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=463793
1015 - added new config directive $omfileForceChown to (try to) fix some broken
1016   system configs.
1017   See ticket for details: http://bugzilla.adiscon.com/show_bug.cgi?id=150
1018 - added $EscapeControlCharacterTab config directive
1019   Thanks to Jonathan Bond-Caron for the patch.
1020 - added option to use unlimited-size select() calls
1021   Thanks to varmjofekoj for the patch
1022 - debugondemand mode caused backgrounding to fail - close to a bug, but I'd
1023   consider the ability to background in this mode a new feature...
1024 - bugfix (kind of): check if TCP connection is still alive if using TLS
1025   Thanks to Jonathan Bond-Caron for the patch.
1026 - imported changes from 4.5.7 and below
1027 - bugfix: potential segfault when -p command line option was used
1028   Thanks for varmojfekoj for pointing me at this bug.
1029 - imported changes from 4.5.6 and below
1030 ---------------------------------------------------------------------------
1031 Version 4.6.8  [v4-stable] (rgerhards), 2011-09-01
1032 - bugfix/security: off-by-two bug in legacy syslog parser, CVE-2011-3200
1033 - bugfix: potential misadressing in property replacer
1034 - bugfix: memcpy overflow can occur in allowed sender checking
1035   if a name is resolved to IPv4-mapped-on-IPv6 address
1036   Found by Ismail Dönmez at suse
1037 - bugfix: The NUL-Byte for the syslogtag was not copied in MsgDup (msg.c)
1038 ---------------------------------------------------------------------------
1039 Version 4.6.7  [v4-stable] (rgerhards), 2011-07-11
1040 - added support for the ":omusrmsg:" syntax in configuring user messages
1041 - added support for the ":omfile:" syntax in configuring user messages
1042 ---------------------------------------------------------------------------
1043 Version 4.6.6  [v4-stable] (rgerhards), 2011-06-24
1044 - bugfix: memory leak in imtcp & subsystems under some circumstances
1045   This leak is tied to error conditions which lead to incorrect cleanup
1046   of some data structures. [backport from v6, limited testing under v4]
1047 - bugfix: invalid processing in QUEUE_FULL condition
1048   If the the multi-submit interface was used and a QUEUE_FULL condition
1049   occured, the failed message was properly destructed. However, the
1050   rest of the input batch, if it existed, was not processed. So this
1051   lead to potential loss of messages and a memory leak. The potential
1052   loss of messages was IMHO minor, because they would have been dropped
1053   in most cases due to the queue remaining full, but very few lucky ones
1054   from the batch may have made it. Anyhow, this has now been changed so
1055   that the rest of the batch is properly tried to be enqueued and, if
1056   not possible, destructed.
1057 - bugfix: invalid storage type for config variables
1058 - bugfix: stream driver mode was not correctly set on tcp ouput on big
1059   endian systems.
1060   thanks varmojfekoj for the patch
1061 - bugfix: IPv6-address could not be specified in omrelp
1062   this was due to improper parsing of ":"
1063   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=250
1064 - bugfix: memory and file descriptor leak in stream processing
1065   Leaks could occur under some circumstances if the file stream handler
1066   errored out during the open call. Among others, this could cause very
1067   big memory leaks if there were a problem with unreadable disk queue
1068   files. In regard to the memory leak, this
1069   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=256
1070 - bugfix: imfile potentially duplicates lines
1071   This can happen when 0 bytes are read from the input file, and some
1072   writer appends data to the file BEFORE we check if a rollover happens.
1073   The check for rollover uses the inode and size as a criterion. So far,
1074   we checked for equality of sizes, which is not given in this scenario,
1075   but that does not indicate a rollover. From the source code comments:
1076      Note that when we check the size, we MUST NOT check for equality.
1077      The reason is that the file may have been written right after we
1078      did try to read (so the file size has increased). That is NOT in
1079      indicator of a rollover (this is an actual bug scenario we 
1080      experienced). So we need to check if the new size is smaller than
1081      what we already have seen!
1082   Also, under some circumstances an invalid truncation was detected. This
1083   code has now been removed, a file change (and thus resent) is only
1084   detected if the inode number changes.
1085 - bugfix: a couple of problems that imfile had on some platforms, namely
1086   Ubuntu (not their fault, but occured there)
1087 - bugfix: imfile utilizes 32 bit to track offset. Most importantly,
1088   this problem can not experienced on Fedora 64 bit OS (which has
1089   64 bit long's!)
1090 - bugfix: abort if imfile reads file line of more than 64KiB
1091   Thanks to Peter Eisentraut for reporting and analysing this problem.
1092   bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=221
1093 - bugfix: omlibdbi did not use password from rsyslog.con
1094   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=203
1095 - bugfix: TCP connection invalidly aborted when messages needed to be
1096   discarded (due to QUEUE_FULL or similar problem)
1097 - bugfix: a slightly more informative error message when a TCP
1098   connections is aborted
1099 - bugfix: timestamp was incorrectly calculated for timezones with minute
1100   offset
1101   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=271
1102 - some improvements thanks to clang's static code analyzer
1103   o overall cleanup (mostly unnecessary writes and otherwise unused stuff)
1104   o bugfix: fixed a very remote problem in msg.c which could occur when
1105     running under extremely low memory conditions
1106 ---------------------------------------------------------------------------
1107 Version 4.6.5  [v4-stable] (rgerhards), 2010-11-24
1108 - bugfix(important): problem in TLS handling could cause rsyslog to loop
1109   in a tight loop, effectively disabling functionality and bearing the
1110   risk of unresponsiveness of the whole system.
1111   Bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=194
1112 ---------------------------------------------------------------------------
1113 Version 4.6.4  [v4-stable] (rgerhards), 2010-08-05
1114 - bugfix: zero-sized (empty) messages were processed by imtcp
1115   they are now dropped as they always should have been
1116 - bugfix: programname filter in ! configuration can not be reset
1117   Thanks to Kiss Gabor for the patch.
1118 ---------------------------------------------------------------------------
1119 Version 4.6.3  [v4-stable] (rgerhards), 2010-07-07
1120 - improvded testbench
1121   - added test with truly random data received via syslog to test
1122     robustness
1123   - added new configure option that permits to disable and enable an
1124     extended testbench
1125 - bugfix: segfault on HUP when "HUPIsRestart" was set to "on"
1126   thanks varmojfekoj for the patch
1127 - bugfix: default for $OMFileFlushOnTXEnd was wrong ("off").
1128   This, in default mode, caused buffered writing to be used, what
1129   means that it looked like no output were written or partial
1130   lines. Thanks to Michael Biebl for pointing out this bug.
1131 - bugfix: testbench failed when not executed in UTC+1 timezone
1132   accidently, the time zone information was kept inside some
1133   to-be-checked-for responses
1134 - temporary bugfix replaced by permanent one for
1135   message-induced off-by-one error (potential segfault) (see 4.6.2)
1136   The analysis has been completed and a better fix been crafted and 
1137   integrated.
1138 - bugfix: the T/P/E config size specifiers did not work properly under
1139   all 32-bit platforms
1140 - bugfix: local unix system log socket was deleted even when it was
1141   not configured
1142 - some doc fixes; incorrect config samples could cause confusion
1143   thanks to Anthony Edwards for pointing the problems out
1144 ---------------------------------------------------------------------------
1145 Version 4.6.2  [v4-stable] (rgerhards), 2010-03-26
1146 - new feature: "." action type added to support writing files to relative
1147   pathes (this is primarily meant as a debug aid)
1148 - added replacements for atomic instructions on systems that do not
1149   support them. [backport of Stefen Sledz' patch for v5)
1150 - new feature: $OMFileAsyncWriting directive added
1151   it permits to specifiy if asynchronous writing should be done or not
1152 - bugfix(temporary): message-induced off-by-one error (potential segfault)
1153   Some types of malformed messages could trigger an off-by-one error
1154   (for example, \0 or \n as the last character, and generally control
1155   character escaption is questionable). This is due to not strictly
1156   following a the \0 or string counted string paradigm (during the last
1157   optimization on the cstring class). As a temporary fix, we have 
1158   introduced a proper recalculation of the size. However, a final
1159   patch is expected in the future. See bug tracker for further details
1160   and when the final patch will be available:
1161   http://bugzilla.adiscon.com/show_bug.cgi?id=184
1162   Note that the current patch is considered sufficient to solve the
1163   situation, but it requires a bit more runtime than desirable.
1164 - bugfix: potential segfault in dynafile cache
1165   This bug was triggered by an open failure. The the cache was full and
1166   a new entry needed to be placed inside it, a victim for eviction was
1167   selected. That victim was freed, then the open of the new file tried. If
1168   the open failed, the victim entry was still freed, and the function
1169   exited. However, on next invocation and cache search, the victim entry
1170   was used as if it were populated, most probably resulting in a segfault.
1171 - bugfix: race condition during directory creation
1172   If multiple files try to create a directory at (almost) the same time,
1173   some of them may fail. This is a data race and also exists with other
1174   processes that may create the same directory. We do now check for this
1175   condition and gracefully handle it.
1176 - bugfix: potential re-use of free()ed file stream object in omfile
1177   when dynaCache is enabled, the cache is full, a new entry needs to
1178   be allocated, thus the LRU discarded, then a new entry is opend and that
1179   fails. In that case, it looks like the discarded stream may be reused
1180   improperly (based on code analysis, test case and confirmation pending)
1181 - added new property replacer option "date-rfc3164-buggyday" primarily
1182   to ease migration from syslog-ng. See property replacer doc for
1183   details. [backport from 5.5.3 because urgently needed by some]
1184 - improved testbench
1185 - bugfix: invalid buffer write in (file) stream class
1186   currently being accessed buffer could be overwritten with new data.
1187   While this probably did not cause access violations, it could case loss
1188   and/or duplication of some data (definitely a race with no deterministic
1189   outcome)
1190 - bugfix: potential hang condition during filestream close
1191   predicate was not properly checked when waiting for the background file
1192   writer
1193 - bugfix: improper synchronization when "$OMFileFlushOnTXEnd on" was used
1194   Internal data structures were not properly protected due to missing
1195   mutex calls.
1196 - bugfix: potential data loss during file stream shutdown
1197 - bugfix: potential problems during file stream shutdown
1198   The shutdown/close sequence was not clean, what potentially (but
1199   unlikely) could lead to some issues. We have not been able to describe
1200   any fatal cases, but there was some bug potential. Sequence has now
1201   been straighted out.
1202 - bugfix: potential problem (loop, abort) when file write error occured
1203   When a write error occured in stream.c, variable iWritten had the error
1204   code but this was handled as if it were the actual number of bytes
1205   written. That was used in pointer arithmetic later on, and thus could
1206   lead to all sorts of problems. However, this could only happen if the
1207   error was EINTR or the file in question was a tty. All other cases were
1208   handled properly. Now, iWritten is reset to zero in such cases, resulting
1209   in proper retries.
1210 - bugfix: $omfileFlushOnTXEnd was turned on when set to off and vice
1211   versa due to an invalid check
1212 - bugfix: recent patch to fix small memory leak could cause invalid free.
1213   This could only happen during config file parsing.
1214 - bugfix(minor): handling of extremely large strings in dbgprintf() fixed
1215   Previously, it could lead to garbagge output and, in extreme cases, also
1216   to segfaults. Note: this was a problem only when debug output was 
1217   actually enabled, so it caused no problem in production use.
1218 - bugfix(minor): BSD_SO_COMPAT query function had some global vars not
1219   properly initialized. However, in practice the loader initializes them 
1220   with zero, the desired value, so there were no actual issue in almost 
1221   all cases.
1222 ---------------------------------------------------------------------------
1223 Version 4.6.1  [v4-stable] (rgerhards), 2010-03-04
1224 - re-enabled old pipe output (using new module ompipe, built-in) after
1225   some problems with pipes (and especially in regard to xconsole) were
1226   discovered. Thanks to Michael Biebl for reporting the issues.
1227 - bugfix: potential problems with large file support could cause segfault
1228   ... and other weird problems. This seemed to affect 32bit-platforms
1229   only, but I can not totally outrule there were issues on other
1230   platforms as well. The previous code could cause system data types
1231   to be defined inconsistently, and that could lead to various 
1232   troubles. Special thanks go to the Mandriva team for identifying
1233   an initial problem, help discussing it and ultimately a fix they
1234   contributed.
1235 - bugfix: fixed problem that caused compilation on FreeBSD 9.0 to fail.
1236   bugtracker: http://bugzilla.adiscon.com/show_bug.cgi?id=181
1237   Thanks to Christiano for reporting.
1238 - bugfix: potential segfault in omfile when a dynafile open failed
1239   In that case, a partial cache entry was written, and some internal
1240   pointers (iCurrElt) not correctly updated. In the next iteration, that
1241   could lead to a segfault, especially if iCurrElt then points to the
1242   then-partial record. Not very likely, but could happen in practice.
1243 - bugfix (theoretical): potential segfault in omfile under low memory
1244   condition. This is only a theoretical bug, because it would only 
1245   happen when strdup() fails to allocate memory - which is highly 
1246   unlikely and will probably lead to all other sorts of errors.
1247 - bugfix: comment char ('#') in literal terminated script parsing
1248   and thus could not be used.
1249   but tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=119
1250   [merged in from v3.22.2]
1251 ---------------------------------------------------------------------------
1252 Version 4.6.0  [v4-stable] (rgerhards), 2010-02-24
1253 ***************************************************************************
1254 * This is a new stable v4 version. It contains all fixes and enhancements *
1255 * made during the 4.5.x phase as well as those listed below.              *
1256 * Note: this version is scheduled to conclude the v4 development process. *
1257 *       Do not expect any more new developments in v4. The focus is now   *
1258 *       on v5 (what also means we have a single devel branch again).      *
1259 *       ("development" means new feature development, bug fixes are of    *
1260 *       course provided for v4-stable)                                    *
1261 ***************************************************************************
1262 - improved testbench to contain samples for totally malformed messages
1263   which miss parts of the message content
1264 - bugfix: some malformed messages could lead to a missing LF inside files
1265   or some other missing parts of the template content.
1266 - bugfix: if a message ended immediately with a hostname, the hostname
1267   was mistakenly interpreted as TAG, and localhost be used as hostname
1268 - bugfix: message without MSG part could case a segfault
1269   [backported from v5 commit 98d1ed504ec001728955a5bcd7916f64cd85f39f]
1270   This actually was a "recent" regression, but I did not realize that it
1271   was introduced by the performance optimization in v4-devel. Shame on
1272   me for having two devel versions at the same time...
1273 ---------------------------------------------------------------------------
1274 Version 4.5.8  [v4-beta] (rgerhards), 2010-02-10
1275 - enhanced doc for using PostgreSQL
1276   Thanks to Marc Schiffbauer for the new/updated doc
1277 - bugfix: property replacer returned invalid parameters under some (unusual)
1278   conditions. In extreme cases, this could lead to garbled logs and/or
1279   a system failure.
1280 - bugfix: invalid length returned (often) when using regular expressions
1281   inside the property replacer
1282 - bugfix: submatch regex in property replacer did not honor "return 0 on
1283   no match" config case
1284 - bugfix: imuxsock incorrectly stated inputname "imudp"
1285   Thanks to Ryan Lynch for reporting this.
1286 - (slightly) enhanced support for FreeBSD by setting _PATH_MODDIR to
1287   the correct value on FreeBSD.
1288   Thanks to Cristiano for the patch.
1289 - bugfix: -d did not enable display of debug messages
1290   regression from introduction of "debug on demand" mode
1291   Thanks to Michael Biebl for reporting this bug
1292 - bugfix: blanks inside file names did not terminate file name parsing.
1293   This could reslult in the whole rest of a line (including comments)
1294   to be treated as file name in "write to file" actions.
1295   Thanks to Jack for reporting this issue.
1296 - bugfix: rsyslog hang when writing to a named pipe which nobody was
1297   reading. Thanks to Michael Biebl for reporting this bug.
1298   Bugzilla entry: http://bugzilla.adiscon.com/show_bug.cgi?id=169
1299 - bugfix: potential segfaults during queue shutdown
1300   (bugs require certain non-standard settings to appear)
1301   Thanks to varmojfekoj for the patch
1302 ---------------------------------------------------------------------------
1303 Version 4.5.7  [v4-beta] (rgerhards), 2009-11-18
1304 - added a so-called "On Demand Debug" mode, in which debug output can
1305   be generated only after the process has started, but not right from
1306   the beginning. This is assumed to be useful for hard-to-find bugs.
1307   Also improved the doc on the debug system.
1308 - bugfix (kind of): check if TCP connection is still alive if using TLS
1309   Thanks to Jonathan Bond-Caron for the patch.
1310 - bugfix: hostname accidently set to IP address for some message sources,
1311   for example imudp. Thanks to Anton for reporting this bug.
1312 - bugfix [imported from 4.4.3]: $ActionExecOnlyOnceEveryInterval did
1313   not work.
1314 ---------------------------------------------------------------------------
1315 Version 4.5.6  [v4-beta] (rgerhards), 2009-11-05
1316 - bugfix: named pipes did no longer work (they always got an open error)
1317   this was a regression from the omfile rewrite in 4.5.0
1318 - bugfix(minor): diag function returned wrong queue memeber count
1319   for the main queue if an active DA queue existed. This had no relevance
1320   to real deployments (assuming they are not running the debug/diagnostic
1321   module...), but sometimes caused grief and false alerts in the 
1322   testbench.
1323 - included some important fixes from v4-stable:
1324   * bugfix: invalid handling of zero-sized messages
1325   * bugfix: zero-sized UDP messages are no longer processed
1326   * bugfix: random data could be appended to message
1327   * bugfix: reverse lookup reduction logic in imudp do DNS queries too often
1328 - bugfix(testbench): testcase did not properly wait for rsyslod shutdown
1329   thus some unpredictable behavior and a false negative test result
1330   could occur. [BACKPORTED from v5]
1331 - bugfix(testbench): sequence check was not always performed correctly,
1332   that could result in tests reporting success when they actually failed
1333 ---------------------------------------------------------------------------
1334 Version 4.5.5  [v4-beta] (rgerhards), 2009-10-21
1335 - added $InputTCPServerNotifyOnConnectionClose config directive
1336   see doc for details
1337 - bugfix: debug string larger than 1K were improperly displayed. Max size
1338   is now 32K
1339 - bugfix: invalid storage class selected for some size config parameters.
1340   This resulted in wrong values. The most prominent victim was the
1341   directory creation mode, which was set to zero in some cases. For 
1342   details, see related blog post:
1343   http://blog.gerhards.net/2009/10/another-note-on-hard-to-find-bugs.html
1344 ---------------------------------------------------------------------------
1345 Version 4.5.4  [v4-beta] (rgerhards), 2009-09-29
1346 - bugfix: potential segfault in stream writer on destruction
1347   Most severely affected omfile. The problem was that some buffers were
1348   freed before the asynchronous writer thread was shut down. So the
1349   writer thread accessed invalid data, which may even already be
1350   overwritten. Symptoms (with omfile) were segfaults, grabled data
1351   and files with random names placed around the file system (most
1352   prominently into the root directory). Special thanks to Aaron for
1353   helping to track this down.
1354 - bugfix: potential race in object loader (obj.c) during use/release
1355   of object interface
1356 - bugfixes: potential problems in out file zip writer. Problems could
1357   lead to abort and/or memory leak. The module is now hardened in a very
1358   conservative way, which is sub-optimal from a performance point of view.
1359   This should be improved if it has proven reliable in practice.
1360 ---------------------------------------------------------------------------
1361 Version 4.5.3  [v4-beta] (rgerhards), 2009-09-17
1362 - bugfix: repeated messages were incorrectly processed
1363   this could lead to loss of the repeated message content. As a side-
1364   effect, it could probably also be possible that some segfault occurs
1365   (quite unlikely). The root cause was that some counters introduced
1366   during the malloc optimizations were not properly duplicated in
1367   MsgDup(). Note that repeated message processing is not enabled
1368   by default.
1369 - bugfix: message sanitation had some issues:
1370   - control character DEL was not properly escaped
1371   - NUL and LF characters were not properly stripped if no control
1372     character replacement was to be done
1373   - NUL characters in the message body were silently dropped (this was
1374     a regeression introduced by some of the recent optimizations)
1375 - bugfix: strings improperly reused, resulting in some message properties
1376   be populated with strings from previous messages. This was caused by
1377   an improper predicate check. [backported from v5]
1378 - fixed some minor portability issues
1379 - bugfix: reverse lookup reduction logic in imudp do DNS queries too often
1380   [imported from 4.4.2]
1381 ---------------------------------------------------------------------------
1382 Version 4.5.2  [v4-beta] (rgerhards), 2009-08-21
1383 - legacy syslog parser changed so that it now accepts date stamps in
1384   wrong case. Some devices seem to create them and I do not see any harm
1385   in supporting that.
1386 - added $InputTCPMaxListeners directive - permits to specify how many 
1387   TCP servers shall be possible (default is 20).
1388 - bugfix: memory leak with some input modules. Those inputs that
1389   use parseAndSubmitMsg() leak two small memory blocks with every message.
1390   Typically, those process only relatively few messages, so the issue 
1391   does most probably not have any effect in practice.
1392 - bugfix: if tcp listen port could not be created, no error message was
1393   emitted
1394 - bugfix: potential segfault in output file writer (omfile)
1395   In async write mode, we use modular arithmetic to index the output
1396   buffer array. However, the counter variables accidently were signed,
1397   thus resulting in negative indizes after integer overflow. That in turn
1398   could lead to segfaults, but was depending on the memory layout of 
1399   the instance in question (which in turn depended on a number of
1400   variables, like compile settings but also configuration). The counters
1401   are now unsigned (as they always should have been) and so the dangling
1402   mis-indexing does no longer happen. This bug potentially affected all
1403   installations, even if only some may actually have seen a segfault.
1404 - bugfix: hostnames with dashes in them were incorrectly treated as
1405   malformed, thus causing them to be treated as TAG (this was a regression
1406   introduced from the "rfc3164 strict" change in 4.5.0).
1407 ---------------------------------------------------------------------------
1408 Version 4.5.1  [DEVEL] (rgerhards), 2009-07-15
1409 - CONFIG CHANGE: $HUPisRestart default is now "off". We are doing this
1410   to support removal of restart-type HUP in v5.
1411 - bugfix: fromhost-ip was sometimes truncated
1412 - bugfix: potential segfault when zip-compressed syslog records were
1413   received (double free)
1414 - bugfix: properties inputname, fromhost, fromhost-ip, msg were lost when
1415   working with disk queues
1416 - performance enhancement: much faster, up to twice as fast (depending
1417   on configuration)
1418 - bugfix: abort condition when RecvFrom was not set and message reduction
1419   was on. Happend e.g. with imuxsock.
1420 - added $klogConsoleLogLevel directive which permits to set a new
1421   console log level while rsyslog is active
1422 - bugfix: message could be truncated after TAG, often when forwarding
1423   This was a result of an internal processing error if maximum field
1424   sizes had been specified in the property replacer.
1425 - added ability for the TCP output action to "rebind" its send socket after
1426   sending n messages (actually, it re-opens the connection, the name is 
1427   used because this is a concept very similiar to $ActionUDPRebindInterval).
1428   New config directive $ActionSendTCPRebindInterval added for the purpose.
1429   By default, rebinding is disabled. This is considered useful for load
1430   balancers.
1431 - testbench improvements
1432 ---------------------------------------------------------------------------
1433 Version 4.5.0  [DEVEL] (rgerhards), 2009-07-02
1434 - activation order of inputs changed, they are now activated only after
1435   privileges are dropped. Thanks to Michael Terry for the patch.
1436 - greatly improved performance
1437 - greatly reduced memory requirements of msg object
1438   to around half of the previous demand. This means that more messages can
1439   be stored in core! Due to fewer cache misses, this also means some
1440   performance improvement.
1441 - improved config error messages: now contain a copy of the config line
1442   that (most likely) caused the error
1443 - reduced max value for $DynaFileCacheSize to 1,000 (the former maximum
1444   of 10,000 really made no sense, even 1,000 is very high, but we like
1445   to keep the user in control ;)).
1446 - added capability to fsync() queue disk files for enhanced reliability
1447   (also add's speed, because you do no longer need to run the whole file
1448   system in sync mode)
1449 - more strict parsing of the hostname in rfc3164 mode, hopefully
1450   removes false positives (but may cause some trouble with hostname
1451   parsing). For details, see this bug tracker:
1452   http://bugzilla.adiscon.com/show_bug.cgi?id=126
1453 - omfile rewrite to natively support zip files (includes large extension
1454   of the stream class)
1455 - added configuration commands (see doc for explanations)
1456   * $OMFileZipLevel
1457   * $OMFileIOBufferSize
1458   * $OMFileFlushOnTXEnd
1459   * $MainMsgQueueSyncQueueFiles
1460   * $ActionQueueSyncQueueFiles
1461 - done some memory accesses explicitely atomic
1462 - bugfix: subtle (and usually irrelevant) issue in timout processing
1463   timeout could be one second too early if nanoseconds wrapped
1464 - set a more sensible timeout for shutdow, now 1.5 seconds to complete
1465   processing (this also removes those cases where the shutdown message
1466   was not written because the termination happened before it)
1467 - internal bugfix: object pointer was only reset to NULL when an object
1468   was actually destructed. This most likely had no effect to existing code,
1469   but it may also have caused trouble in remote cases. Similarly, the fix
1470   may also cause trouble...
1471 - bugfix: missing initialization during timestamp creation
1472   This could lead to timestamps written in the wrong format, but not to
1473   an abort
1474 ---------------------------------------------------------------------------
1475 Version 4.4.3  [v4-stable] (rgerhards), 2009-10-??
1476 - bugfix: several smaller bugs resolved after flexelint review
1477   Thanks to varmojfekoj for the patch.
1478 - bugfix: $ActionExecOnlyOnceEveryInterval did not work.
1479   This was a regression from the time() optimizations done in v4.
1480   Bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=143
1481   Thanks to Klaus Tachtler for reporting this bug.
1482 - bugfix: potential segfault on queue shutdown
1483   Thanks to varmojfekoj for the patch.
1484 - bugfix: potential hang condition on queue shutdown
1485   [imported from v3-stable]
1486 - bugfix: segfault on startup when -q or -Q option was given
1487   [imported from v3-stable]
1488 ---------------------------------------------------------------------------
1489 Version 4.4.2  [v4-stable] (rgerhards), 2009-10-09
1490 - bugfix: invalid handling of zero-sized messages, could lead to mis-
1491   addressing and potential memory corruption/segfault
1492 - bugfix: zero-sized UDP messages are no longer processed
1493   until now, they were forwarded to processing, but this makes no sense
1494   Also, it looks like the system seems to provide a zero return code
1495   on a UDP recvfrom() from time to time for some internal reasons. These
1496   "receives" are now silently ignored.
1497 - bugfix: random data could be appended to message, possibly causing
1498   segfaults
1499 - bugfix: reverse lookup reduction logic in imudp do DNS queries too often
1500   A comparison was done between the current and the former source address.
1501   However, this was done on the full sockaddr_storage structure and not
1502   on the host address only. This has now been changed for IPv4 and IPv6.
1503   The end result of this bug could be a higher UDP message loss rate than
1504   necessary (note that UDP message loss can not totally be avoided due
1505   to the UDP spec)
1506 ---------------------------------------------------------------------------
1507 Version 4.4.1  [v4-stable] (rgerhards), 2009-09-02
1508 - features requiring Java are automatically disabled if Java is not
1509   present (thanks to Michael Biebl for his help!)
1510 - bugfix: invalid double-quoted PRI, among others in outgoing messages
1511   This causes grief with all receivers.
1512   Bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=147
1513 - bugfix: Java testing tools were required, even if testbench was disabled
1514   This resulted in build errors if no Java was present on the build system,
1515   even though none of the selected option actually required Java.
1516   (I forgot to backport a similar fix to newer releases).
1517 - bugfix (backport): omfwd segfault
1518   Note that the orginal (higher version) patch states this happens only
1519   when debugging mode is turned on. That statement is wrong: if debug
1520   mode is turned off, the message is not being emitted, but the division
1521   by zero in the actual parameters still happens.
1522 ---------------------------------------------------------------------------
1523 Version 4.4.0  [v4-stable] (rgerhards), 2009-08-21
1524 - bugfix: stderr/stdout were not closed to be able to emit error messages,
1525   but this caused ssh sessions to hang. Now we close them after the 
1526   initial initialization. See forum thread:
1527   http://kb.monitorware.com/controlling-terminal-issues-t9875.html
1528 - bugfix: sending syslog messages with zip compression did not work
1529 ---------------------------------------------------------------------------
1530 Version 4.3.2  [v4-beta] (rgerhards), 2009-06-24
1531 - removed long-obsoleted property UxTradMsg
1532 - added a generic network stream server (in addition to rather specific
1533   syslog tcp server)
1534 - added ability for the UDP output action to rebind its send socket after
1535   sending n messages. New config directive $ActionSendUDPRebindInterval
1536   added for the purpose. By default, rebinding is disabled. This is 
1537   considered useful for load balancers.
1538 - bugfix: imdiag/imtcp had a race condition
1539 - improved testbench (now much better code design and reuse)
1540 - added config switch --enable-testbench=no to turn off testbench
1541 ---------------------------------------------------------------------------
1542 Version 4.3.1  [DEVEL] (rgerhards), 2009-05-25
1543 - added capability to run multiple tcp listeners (on different ports)
1544 - performance enhancement: imtcp calls parser no longer on input thread
1545   but rather inside on of the potentially many main msg queue worker
1546   threads (an enhancement scheduled for all input plugins where this is
1547   possible)
1548 - added $GenerateConfigGraph configuration command which can be used
1549   to generate nice-looking (and very informative) rsyslog configuration
1550   graphs.
1551 - added $ActionName configuration directive (currently only used for
1552   graph generation, but may find other uses)
1553 - improved doc
1554   * added (hopefully) easier to grasp queue explanation
1555 - improved testbench
1556   * added tests for queue disk-only mode (checks disk queue logic)
1557 - bugfix: light and full delay watermarks had invalid values, badly
1558   affecting performance for delayable inputs
1559 - build system improvements - thanks to Michael Biebl
1560 - added new testing module imdiag, which enables to talk to the 
1561   rsyslog core at runtime. The current implementation is only a 
1562   beginning, but can be expanded over time
1563 ---------------------------------------------------------------------------
1564 Version 4.3.0  [DEVEL] (rgerhards), 2009-04-17
1565 - new feature: new output plugin omprog, which permits to start program
1566   and feed it (via its stdin) with syslog messages. If the program
1567   terminates, it is restarted.
1568 - improved internal handling of RainerScript functions, building the
1569   necessary plumbing to support more functions with decent runtime
1570   performance. This is also necessary towards the long-term goal
1571   of loadable library modules.
1572 - added new RainerScript function "tolower"
1573 - improved testbench
1574   * added tests for tcp-based reception
1575   * added tcp-load test (1000 connections, 20,000 messages)
1576 - added $MaxOpenFiles configuration directive
1577 - bugfix: solved potential memory leak in msg processing, could manifest
1578   itself in imtcp
1579 - bugfix: ompgsql did not detect problems in sql command execution
1580   this could cause loss of messages. The handling was correct if the
1581   connection broke, but not if there was a problem with statement
1582   execution. The most probable case for such a case would be invalid
1583   sql inside the template, and this is now much easier to diagnose.
1584 ---------------------------------------------------------------------------
1585 Version 4.2.0  [v4-stable] (rgerhards), 2009-06-23
1586 - bugfix: light and full delay watermarks had invalid values, badly
1587   affecting performance for delayable inputs
1588 - imported all patches from 3.22.1 as of today (see below)
1589 - bugfix: compile problems in im3195
1590 ---------------------------------------------------------------------------
1591 Version 4.1.7  [BETA] (rgerhards), 2009-04-22
1592 - bugfix: $InputTCPMaxSessions config directive was accepted, but not
1593   honored. This resulted in a fixed upper limit of 200 connections.
1594 - bugfix: the default for $DirCreateMode was 0644, and as such wrong.
1595   It has now been changed to 0700. For some background, please see
1596   http://lists.adiscon.net/pipermail/rsyslog/2009-April/001986.html
1597 - bugfix: ompgsql did not detect problems in sql command execution
1598   this could cause loss of messages. The handling was correct if the
1599   connection broke, but not if there was a problem with statement
1600   execution. The most probable case for such a case would be invalid
1601   sql inside the template, and this is now much easier to diagnose.
1602 ---------------------------------------------------------------------------
1603 Version 4.1.6  [DEVEL] (rgerhards), 2009-04-07
1604 - added new "csv" property replacer options to enable simple creation
1605   of CSV-formatted outputs (format from RFC4180 is used)
1606 - implemented function support in RainerScript. That means the engine
1607   parses and compile functions, as well as executes a few build-in
1608   ones. Dynamic loading and registration of functions is not yet
1609   supported - but we now have a good foundation to do that later on.
1610 - implemented the strlen() RainerScript function
1611 - added a template output module
1612 - added -T rsyslogd command line option, enables to specify a directory
1613   where to chroot() into on startup. This is NOT a security feature but
1614   introduced to support testing. Thus, -T does not make sure chroot()
1615   is used in a secure way. (may be removed later)
1616 - added omstdout module for testing purposes. Spits out all messages to
1617   stdout - no config option, no other features
1618 - added a parser testing suite (still needs to be extended, but a good
1619   start)
1620 - modified $ModLoad statement so that for modules whom's name starts with
1621   a dot, no path is prepended (this enables relative-pathes and should
1622   not break any valid current config)
1623 - fixed a bug that caused action retries not to work correctly
1624   situation was only cleared by a restart
1625 - bugfix: closed dynafile was potentially never written until another
1626   dynafile name was generated - potential loss of messages
1627 - improved omfile so that it properly suspends itself if there is an
1628   i/o or file name generation error. This enables it to be used with
1629   the full high availability features of rsyslog's engine
1630 - bugfix: fixed some segaults on Solaris, where vsprintf() does not
1631   check for NULL pointers
1632 - improved performance of regexp-based filters
1633   Thanks to Arnaud Cornet for providing the idea and initial patch.
1634 - added a new way how output plugins may be passed parameters. This is
1635   more effcient for some outputs. They new can receive fields not only
1636   as a single string but rather in an array where each string is seperated.
1637 - added (some) developer documentation for output plugin interface
1638 - bugfix: potential abort with DA queue after high watermark is reached
1639   There exists a race condition that can lead to a segfault. Thanks
1640   go to vbernetr, who performed the analysis and provided patch, which
1641   I only tweaked a very little bit.
1642 - bugfix: imtcp did incorrectly parse hostname/tag
1643   Thanks to Luis Fernando Muñoz Mejías for the patch.
1644 ---------------------------------------------------------------------------
1645 Version 4.1.5  [DEVEL] (rgerhards), 2009-03-11
1646 - bugfix: parser did not correctly parse fields in UDP-received messages
1647 - added ERE support in filter conditions
1648   new comparison operation "ereregex"
1649 - added new config directive $RepeatedMsgContainsOriginalMsg so that the
1650   "last message repeated n times" messages, if generated, may
1651   have an alternate format that contains the message that is being repeated
1652 ---------------------------------------------------------------------------
1653 Version 4.1.4  [DEVEL] (rgerhards), 2009-01-29
1654 - bugfix: inconsistent use of mutex/atomic operations could cause segfault
1655   details are too many, for full analysis see blog post at:
1656   http://blog.gerhards.net/2009/01/rsyslog-data-race-analysis.html
1657 - bugfix: unitialized mutex was used in msg.c:getPRI
1658   This was subtle, because getPRI is called as part of the debugging code
1659   (always executed) in syslogd.c:logmsg.
1660 - bufgix: $PreserveFQDN was not properly handled for locally emitted
1661   messages
1662 ---------------------------------------------------------------------------
1663 Version 4.1.3  [DEVEL] (rgerhards), 2008-12-17
1664 - added $InputTCPServerAddtlFrameDelimiter config directive, which
1665   enables to specify an additional, non-standard message delimiter
1666   for processing plain tcp syslog. This is primarily a fix for the invalid
1667   framing used in Juniper's NetScreen products. Credit to forum user
1668   Arv for suggesting this solution.
1669 - added $InputTCPServerInputName property, which enables a name to be
1670   specified that will be available during message processing in the
1671   inputname property. This is considered useful for logic that treats
1672   messages differently depending on which input received them.
1673 - added $PreserveFQDN config file directive
1674   Enables to use FQDNs in sender names where the legacy default
1675   would have stripped the domain part.
1676   Thanks to BlinkMind, Inc. http://www.blinkmind.com for sponsoring this
1677   development.
1678 - bugfix: imudp went into an endless loop under some circumstances
1679   (but could also leave it under some other circumstances...)
1680   Thanks to David Lang and speedfox for reporting this issue.
1681 ---------------------------------------------------------------------------
1682 Version 4.1.2  [DEVEL] (rgerhards), 2008-12-04
1683 - bugfix: code did not compile without zlib
1684 - security bugfix: $AllowedSender was not honored, all senders were
1685   permitted instead (see http://www.rsyslog.com/Article322.phtml)
1686 - security fix: imudp emitted a message when a non-permitted sender
1687   tried to send a message to it. This behaviour is operator-configurable.
1688   If enabled, a message was emitted each time. That way an attacker could
1689   effectively fill the disk via this facility. The message is now
1690   emitted only once in a minute (this currently is a hard-coded limit,
1691   if someone comes up with a good reason to make it configurable, we
1692   will probably do that).
1693 - doc bugfix: typo in v3 compatibility document directive syntax
1694   thanks to Andrej for reporting
1695 - imported other changes from 3.21.8 and 3.20.1 (see there)
1696 ---------------------------------------------------------------------------
1697 Version 4.1.1  [DEVEL] (rgerhards), 2008-11-26
1698 - added $PrivDropToGroup, $PrivDropToUser, $PrivDropToGroupID,
1699   $PrivDropToUserID config directives to enable dropping privileges.
1700   This is an effort to provide a security enhancement. For the limits of this
1701   approach, see http://wiki.rsyslog.com/index.php/Security
1702 - re-enabled imklog to compile on FreeBSD (brought in from beta)
1703 ---------------------------------------------------------------------------
1704 Version 4.1.0  [DEVEL] (rgerhards), 2008-11-18
1706 ********************************* WARNING *********************************
1707 This version has a slightly different on-disk format for message entries.
1708 As a consequence, old queue files being read by this version may have
1709 an invalid output timestamp, which could result to some malfunction inside
1710 the output driver. It is recommended to drain queues with the previous
1711 version before switching to this one.
1712 ********************************* WARNING *********************************
1714 - greatly enhanced performance when compared to v3.
1715 - added configuration directive "HUPisRestart" which enables to configure
1716   HUP to be either a full restart or "just" a leightweight way to
1717   close open files.
1718 - enhanced legacy syslog parser to detect year if part of the timestamp
1719   the format is based on what Cisco devices seem to emit.
1720 - added a setting "$OptimizeForUniprocessor" to enable users to turn off
1721   pthread_yield calls which are counter-productive on multiprocessor 
1722   machines (but have been shown to be useful on uniprocessors)
1723 - reordered imudp processing. Message parsing is now done as part of main
1724   message queue worker processing (was part of the input thread)
1725   This should also improve performance, as potentially more work is
1726   done in parallel.
1727 - bugfix: compressed syslog messages could be slightly mis-uncompressed
1728   if the last byte of the compressed record was a NUL
1729 - added $UDPServerTimeRequery option which enables to work with
1730   less acurate timestamps in favor of performance. This enables querying
1731   of the time only every n-th time if imudp is running in the tight
1732   receive loop (aka receiving messsages at a high rate)
1733 - doc bugfix: queue doc had wrong parameter name for setting controlling
1734   worker thread shutdown period
1735 - restructured rsyslog.conf documentation
1736 - bugfix: memory leak in ompgsql
1737   Thanks to Ken for providing the patch
1738 ---------------------------------------------------------------------------
1739 Version 3.22.4 [v3-stable] (rgerhards), 2010-??-??
1740 - bugfix: timestamp was incorrectly calculated for timezones with minute
1741   offset
1742   closes: http://bugzilla.adiscon.com/show_bug.cgi?id=271
1743 - improved some code based on clang static analyzer results
1744 - bugfix: potential misadressing in property replacer
1745 ---------------------------------------------------------------------------
1746 Version 3.22.3 [v3-stable] (rgerhards), 2010-11-24
1747 - bugfix(important): problem in TLS handling could cause rsyslog to loop
1748   in a tight loop, effectively disabling functionality and bearing the
1749   risk of unresponsiveness of the whole system.
1750   Bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=194
1751 ---------------------------------------------------------------------------
1752 Version 3.22.2 [v3-stable] (rgerhards), 2010-08-05
1753 - bugfix: comment char ('#') in literal terminated script parsing
1754   and thus could not be used.
1755   but tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=119
1756 - enhance: imrelp now also provides remote peer's IP address 
1757   [if librelp != 1.0.0 is used]
1758 - bugfix: sending syslog messages with zip compression did not work
1759 - bugfix: potential hang condition on queue shutdown
1760 - bugfix: segfault on startup when -q or -Q option was given
1761   bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=157
1762   Thanks to Jonas Nogueira for reporting this bug.
1763 - clarified use of $ActionsSendStreamDriver[AuthMode/PermittedPeers]
1764   in doc set (require TLS drivers)
1765 - bugfix: $CreateDirs variable not properly initialized, default thus
1766   was random (but most often "on")
1767 - bugfix: potential segfault when -p command line option was used
1768   thanks to varmojfekoj for pointing me at this bug
1769 - bugfix: programname filter in ! configuration can not be reset
1770   Thanks to Kiss Gabor for the patch.
1771 ---------------------------------------------------------------------------
1772 Version 3.22.1 [v3-stable] (rgerhards), 2009-07-02
1773 - bugfix: invalid error message issued if $inlcudeConfig was on an empty
1774   set of files (e.g. *.conf, where none such files existed)
1775   thanks to Michael Biebl for reporting this bug
1776 - bugfix: when run in foreground (but not in debug mode), a 
1777   debug message ("DoDie called") was emitted at shutdown. Removed.
1778   thanks to Michael Biebl for reporting this bug
1779 - bugfix: some garbagge was emitted to stderr on shutdown. This
1780   garbage consisted of file names, which were written during 
1781   startup (key point: not a pointer error)
1782   thanks to Michael Biebl for reporting this bug
1783 - bugfix: startup and shutdown message were emitted to stdout
1784   thanks to Michael Biebl for reporting this bug
1785 - bugfix: error messages were not emitted to stderr in forked mode
1786   (stderr and stdo are now kept open across forks)
1787 - bugfix: internal messages were emitted to whatever file had fd2 when
1788   rsyslogd ran in forked mode (as usual!)
1789   Thanks to varmojfekoj for the patch
1790 - small enhancement: config validation run now exits with code 1 if an
1791   error is detected. This change is considered important but small enough
1792   to apply it directly to the stable version. [But it is a border case,
1793   the change requires more code than I had hoped. Thus I have NOT tried
1794   to actually catch all cases, this is left for the current devel
1795   releases, if necessary]
1796 - bugfix: light and full delay watermarks had invalid values, badly
1797   affecting performance for delayable inputs
1798 - bugfix: potential segfault issue when multiple $UDPServerRun directives
1799   are specified. Thanks to Michael Biebl for helping to debug this one.
1800 - relaxed GnuTLS version requirement to 1.4.0 after confirmation from the
1801   field that this version is sufficient
1802 - bugfix: parser did not properly handle empty structured data
1803 - bugfix: invalid mutex release in msg.c (detected under thread debugger,
1804   seems not to have any impact on actual deployments)
1805 ---------------------------------------------------------------------------
1806 Version 3.22.0 [v3-stable] (rgerhards), 2009-04-21
1807 This is the first stable release that includes the full functionality
1808 of the 3.21.x version tree.
1809 - bugfix: $InputTCPMaxSessions config directive was accepted, but not
1810   honored. This resulted in a fixed upper limit of 200 connections.
1811 - bugfix: the default for $DirCreateMode was 0644, and as such wrong.
1812   It has now been changed to 0700. For some background, please see
1813   http://lists.adiscon.net/pipermail/rsyslog/2009-April/001986.html
1814 - bugfix: ompgsql did not detect problems in sql command execution
1815   this could cause loss of messages. The handling was correct if the
1816   connection broke, but not if there was a problem with statement
1817   execution. The most probable case for such a case would be invalid
1818   sql inside the template, and this is now much easier to diagnose.
1819 ---------------------------------------------------------------------------
1820 Version 3.21.11 [BETA] (rgerhards), 2009-04-03
1821 - build system improvements contributed by Michael Biebl - thx!
1822 - all patches from 3.20.5 incorporated (see it's ChangeLog entry)
1823 ---------------------------------------------------------------------------
1824 Version 3.21.10 [BETA] (rgerhards), 2009-02-02
1825 - bugfix: inconsistent use of mutex/atomic operations could cause segfault
1826   details are too many, for full analysis see blog post at:
1827   http://blog.gerhards.net/2009/01/rsyslog-data-race-analysis.html
1828 - the string "Do Die" was accidently emited upon exit in non-debug mode
1829   This has now been corrected. Thanks to varmojfekoj for the patch.
1830 - some legacy options were not correctly processed.
1831   Thanks to varmojfekoj for the patch.
1832 - doc bugfix: v3-compatiblity document had typo in config directive
1833   thanks to Andrej for reporting this
1834 ---------------------------------------------------------------------------
1835 Version 3.21.9 [BETA] (rgerhards), 2008-12-04
1836 - re-release of 3.21.8 with an additional fix, that could also lead
1837   to DoS; 3.21.8 has been removed from the official download archives
1838 - security fix: imudp emitted a message when a non-permitted sender
1839   tried to send a message to it. This behaviour is operator-configurable.
1840   If enabled, a message was emitted each time. That way an attacker could
1841   effectively fill the disk via this facility. The message is now
1842   emitted only once in a minute (this currently is a hard-coded limit,
1843   if someone comes up with a good reason to make it configurable, we
1844   will probably do that).
1845 ---------------------------------------------------------------------------
1846 Version 3.21.8  [BETA] (rgerhards), 2008-12-04
1847 - bugfix: imklog did not compile on FreeBSD
1848 - security bugfix: $AllowedSender was not honored, all senders were
1849   permitted instead (see http://www.rsyslog.com/Article322.phtml)
1850 - merged in all other changes from 3.20.1 (see there)
1851 ---------------------------------------------------------------------------
1852 Version 3.21.7  [BETA] (rgerhards), 2008-11-11
1853 - this is the new beta branch, based on the former 3.21.6 devel
1854 - new functionality: ZERO property replacer nomatch option (from v3-stable)
1855 ---------------------------------------------------------------------------
1856 Version 3.21.6  [DEVEL] (rgerhards), 2008-10-22
1857 - consolidated time calls during msg object creation, improves performance
1858   and consistency
1859 - bugfix: solved a segfault condition
1860 - bugfix: subsecond time properties generated by imfile, imklog and
1861   internal messages could be slightly inconsistent
1862 - bugfix: (potentially big) memory leak on HUP if queues could not be
1863   drained before timeout - thanks to David Lang for pointing this out
1864 - added capability to support multiple module search pathes. Thank
1865   to Marius Tomaschewski for providing the patch.
1866 - bugfix: im3195 did no longer compile
1867 - improved "make distcheck" by ensuring everything relevant is recompiled
1868 ---------------------------------------------------------------------------
1869 Version 3.21.5  [DEVEL] (rgerhards), 2008-09-30
1870 - performance optimization: unnecessary time() calls during message
1871   parsing removed - thanks to David Lang for his excellent performance
1872   analysis
1873 - added new capability to property replacer: multiple immediately
1874   successive field delimiters are treated as a single one.
1875   Thanks to Zhuang Yuyao for the patch.
1876 - added message property "inputname", which contains the name of the
1877   input (module) that generated it. Presence is depending on suport in
1878   each input module (else it is blank).
1879 - added system property "$myhostname", which contains the name of the
1880   local host as it knows itself.
1881 - imported a number of fixes and enhancements from the stable and
1882   devel branches, including a fix to a potential segfault on HUP
1883   when using UDP listners
1884 - re-enabled gcc builtin atomic operations and added a proper
1885   ./configure check
1886 - bugfix: potential race condition when adding messages to queue
1887   There was a wrong order of mutex lock operations. It is hard to
1888   believe that really caused problems, but in theory it could and with
1889   threading we often see that theory becomes practice if something is only
1890   used long enough on a fast enough machine with enough CPUs ;)
1891 - cleaned up internal debug system code and made it behave better
1892   in regard to multi-threading
1893 ---------------------------------------------------------------------------
1894 Version 3.21.4  [DEVEL] (rgerhards), 2008-09-04
1895 - removed compile time fixed message size limit (was 2K), limit can now
1896   be set via $MaxMessageSize global config directive (finally gotten rid
1897   of MAXLINE ;))
1898 - enhanced doc for $ActionExecOnlyEveryNthTimeTimeout
1899 - integrated a number of patches from 3.18.4, namely
1900   - bugfix: order-of magnitude issue with base-10 size definitions
1901     in config file parser. Could lead to invalid sizes, constraints
1902     etc for e.g. queue files and any other object whose size was specified
1903     in base-10 entities. Did not apply to binary entities. Thanks to
1904     RB for finding this bug and providing a patch.
1905   - bugfix: action was not called when system time was set backwards
1906     (until the previous time was reached again). There are still some
1907     side-effects when time is rolled back (A time rollback is really a bad
1908     thing to do, ideally the OS should issue pseudo time (like NetWare did)
1909     when the user tries to roll back time). Thanks to varmojfekoj for this
1910     patch.
1911   - doc bugfix: rsyslog.conf man page improved and minor nit fixed
1912     thanks to Lukas Kuklinek for the patch.
1913 ---------------------------------------------------------------------------
1914 Version 3.21.3  [DEVEL] (rgerhards), 2008-08-13
1915 - added ability to specify flow control mode for imuxsock
1916 - added ability to execute actions only after the n-th call of the action
1917   This also lead to the addition of two new config directives:
1918   $ActionExecOnlyEveryNthTime and $ActionExecOnlyEveryNthTimeTimeout
1919   This feature is useful, for example, for alerting: it permits you to
1920   send an alert only after at least n occurences of a specific message
1921   have been seen by rsyslogd. This protectes against false positives
1922   due to waiting for additional confirmation.
1923 - bugfix: IPv6 addresses could not be specified in forwarding actions
1924   New syntax @[addr]:port introduced to enable that. Root problem was IPv6
1925   addresses contain colons.
1926 - somewhat enhanced debugging messages
1927 - imported from 3.18.3:
1928   - enhanced ommysql to support custom port to connect to server
1929     Port can be set via new $ActionOmmysqlServerPort config directive
1930     Note: this was a very minor change and thus deemed appropriate to be
1931     done in the stable release.
1932   - bugfix: misspelled config directive, previously was
1933     $MainMsgQueueWorkeTimeoutrThreadShutdown, is now
1934     $MainMsgQueueWorkerTimeoutThreadShutdown. Note that the misspelled
1935     directive is not preserved - if the misspelled directive was used
1936     (which I consider highly unlikely), the config file must be changed.
1937     Thanks to lperr for reporting the bug.
1938 ---------------------------------------------------------------------------
1939 Version 3.21.2  [DEVEL] (rgerhards), 2008-08-04
1940 - added $InputUnixListenSocketHostName config directive, which permits to
1941   override the hostname being used on a local unix socket. This is useful
1942   for differentiating "hosts" running in several jails. Feature was
1943   suggested by David Darville, thanks for the suggestion.
1944 - enhanced ommail to support multiple email recipients. This is done by
1945   specifying $ActionMailTo multiple times. Note that this introduces a
1946   small incompatibility to previous config file syntax: the recipient
1947   list is now reset for each action (we honestly believe that will
1948   not cause any problem - apologies if it does).
1949 - enhanced troubleshooting documentation
1950 ---------------------------------------------------------------------------
1951 Version 3.21.1  [DEVEL] (rgerhards), 2008-07-30
1952 - bugfix: no error was reported if the target of a $IncludeConfig
1953   could not be accessed.
1954 - added testbed for common config errors
1955 - added doc for -u option to rsyslogd man page
1956 - enhanced config file checking - no active actions are detected
1957 - added -N rsyslogd command line option for a config validation run
1958   (which does not execute actual syslogd code and does not interfere
1959   with a running instance)
1960 - somewhat improved emergency configuration. It is now also selected
1961   if the config contains no active actions
1962 - rsyslogd error messages are now reported to stderr by default. can be
1963   turned off by the new "$ErrorMessagesToStderr off" directive
1964  Thanks to HKS for suggesting the new features.
1965 ---------------------------------------------------------------------------
1966 Version 3.21.0  [DEVEL] (rgerhards), 2008-07-18
1967 - starts a new devel branch
1968 - added a generic test driver for RainerScript plus some test cases
1969   to the testbench
1970 - added a small diagnostic tool to obtain result of gethostname() API
1971 - imported all changes from 3.18.1 until today (some quite important,
1972   see below)
1973 ---------------------------------------------------------------------------
1974 Version 3.20.6 [v3-stable] (rgerhards), 2009-04-16
1975 - this is the last v3-stable for the 3.20.x series
1976 - bugfix: $InputTCPMaxSessions config directive was accepted, but not
1977   honored. This resulted in a fixed upper limit of 200 connections.
1978 - bugfix: the default for $DirCreateMode was 0644, and as such wrong.
1979   It has now been changed to 0700. For some background, please see
1980   http://lists.adiscon.net/pipermail/rsyslog/2009-April/001986.html
1981 ---------------------------------------------------------------------------
1982 Version 3.20.5 [v3-stable] (rgerhards), 2009-04-02
1983 - bugfix: potential abort with DA queue after high watermark is reached
1984   There exists a race condition that can lead to a segfault. Thanks
1985   go to vbernetr, who performed the analysis and provided patch, which
1986   I only tweaked a very little bit.
1987 - fixed bugs in RainerScript:
1988   o when converting a number and a string to a common type, both were 
1989     actually converted to the other variable's type.
1990   o the value of rsCStrConvertToNumber() was miscalculated.
1991   Thanks to varmojfekoj for the patch
1992 - fixed a bug in configure.ac which resulted in problems with
1993   environment detection - thanks to Michael Biebl for the patch
1994 - fixed a potential segfault problem in gssapi code
1995   thanks to varmojfekoj for the patch
1996 - doc enhance: provide standard template for MySQL module and instructions
1997   on how to modify schema
1998 ---------------------------------------------------------------------------
1999 Version 3.20.4 [v3-stable] (rgerhards), 2009-02-09
2000 - bugfix: inconsistent use of mutex/atomic operations could cause segfault
2001   details are too many, for full analysis see blog post at:
2002   http://blog.gerhards.net/2009/01/rsyslog-data-race-analysis.html
2003 - bugfix: invalid ./configure settings for RFC3195
2004   thanks to Michael Biebl for the patch
2005 - bugfix: invalid mutex access in msg.c
2006 - doc bugfix: dist tarball missed 2 files, had one extra file that no
2007   longer belongs into it. Thanks to Michael Biebl for pointing this out.
2008 ---------------------------------------------------------------------------
2009 Version 3.20.3 [v3-stable] (rgerhards), 2009-01-19
2010 - doc bugfix: v3-compatiblity document had typo in config directive
2011   thanks to Andrej for reporting this
2012 - fixed a potential segfault condition with $AllowedSender directive
2013   On HUP, the root pointers were not properly cleaned up. Thanks to
2014   Michael Biebel, olgoat, and Juha Koho for reporting and analyzing
2015   the bug.
2016 ---------------------------------------------------------------------------
2017 Version 3.20.2 [v3-stable] (rgerhards), 2008-12-04
2018 - re-release of 3.20.1 with an additional fix, that could also lead
2019   to DoS; 3.20.1 has been removed from the official download archives
2020 - security fix: imudp emitted a message when a non-permitted sender
2021   tried to send a message to it. This behaviour is operator-configurable.
2022   If enabled, a message was emitted each time. That way an attacker could
2023   effectively fill the disk via this facility. The message is now
2024   emitted only once in a minute (this currently is a hard-coded limit,
2025   if someone comes up with a good reason to make it configurable, we
2026   will probably do that).
2027 ---------------------------------------------------------------------------
2028 Version 3.20.1 [v3-stable] (rgerhards), 2008-12-04
2029 - security bugfix: $AllowedSender was not honored, all senders were
2030   permitted instead
2031 - enhance: regex nomatch option "ZERO" has been added
2032   This allows to return the string 0 if a regular expression is
2033   not found. This is probably useful for storing numerical values into
2034   database columns.
2035 - bugfix: memory leak in gtls netstream driver fixed
2036   memory was lost each time a TLS session was torn down. This could 
2037   result in a considerable memory leak if it happened quite frequently
2038   (potential system crash condition)
2039 - doc update: documented how to specify multiple property replacer
2040   options + link to new online regex generator tool added
2041 - minor bufgfix: very small memory leak in gtls netstream driver
2042   around a handful of bytes (< 20) for each HUP
2043 - improved debug output for regular expressions inside property replacer
2044   RE's seem to be a big trouble spot and I would like to have more
2045   information inside the debug log. So I decided to add some additional
2046   debug strings permanently.
2047 ---------------------------------------------------------------------------
2048 Version 3.20.0 [v3-stable] (rgerhards), 2008-11-05
2049 - this is the inital release of the 3.19.x branch as a stable release
2050 - bugfix: double-free in pctp netstream driver. Thank to varmojfeko
2051   for the patch
2052 ---------------------------------------------------------------------------
2053 Version 3.19.12 [BETA] (rgerhards), 2008-10-16
2054 - bugfix: subseconds where not correctly extracted from a timestamp
2055   if that timestamp did not contain any subsecond information (the
2056   resulting string was garbagge but should have been "0", what it
2057   now is).
2058 - increased maximum size of a configuration statement to 4K (was 1K)
2059 - imported all fixes from the stable branch (quite a lot)
2060 - bugfix: (potentially big) memory leak on HUP if queues could not be
2061   drained before timeout - thanks to David Lang for pointing this out
2062 ---------------------------------------------------------------------------
2063 Version 3.19.11 [BETA] (rgerhards), 2008-08-25
2064 This is a refresh of the beta. No beta-specific fixes have been added.
2065 - included fixes from v3-stable (most importantly 3.18.3)
2066 ---------------------------------------------------------------------------
2067 Version 3.19.10 [BETA] (rgerhards), 2008-07-15
2068 - start of a new beta branch based on former 3.19 devel branch
2069 - bugfix: bad memory leak in disk-based queue modes
2070 - bugfix: UDP syslog forwarding did not work on all platforms
2071   the ai_socktype was incorrectly set to 1. On some platforms, this
2072   lead to failing name resolution (e.g. FreeBSD 7). Thanks to HKS for
2073   reporting the bug.
2074 - bugfix: priority was incorrectly calculated on FreeBSD 7,
2075   because the LOG_MAKEPRI() C macro has a different meaning there (it
2076   is just a simple addition of faciltity and severity). I have changed
2077   this to use own, consistent, code for PRI calculation. Thank to HKS
2078   for reporting this bug.
2079 - bugfix (cosmetical): authorization was not checked when gtls handshake
2080   completed immediately. While this sounds scary, the situation can not
2081   happen in practice. We use non-blocking IO only for server-based gtls
2082   session setup. As TLS requires the exchange of multiple frames before
2083   the handshake completes, it simply is impossible to do this in one
2084   step. However, it is useful to have the code path correct even for 
2085   this case - otherwise, we may run into problems if the code is changed
2086   some time later (e.g. to use blocking sockets). Thanks to varmojfekoj
2087   for providing the patch.
2088 - important queue bugfix from 3.18.1 imported (see below)
2089 - cleanup of some debug messages
2090 ---------------------------------------------------------------------------
2091 Version 3.19.9 (rgerhards), 2008-07-07
2092 - added tutorial for creating a TLS-secured syslog infrastructure
2093 - rewritten omusrmsg to no longer fork() a new process for sending messages
2094   this caused some problems with the threading model, e.g. zombies. Also,
2095   it was far less optimal than it is now.
2096 - bugfix: machine certificate was required for client even in TLS anon mode
2097   Reference: http://bugzilla.adiscon.com/show_bug.cgi?id=85
2098   The fix also slightly improves performance by not storing certificates in
2099   client sessions when there is no need to do so.
2100 - bugfix: RainerScript syntax error was not always detected
2101 ---------------------------------------------------------------------------
2102 Version 3.19.8 (rgerhards), 2008-07-01
2103 - bugfix: gtls module did not correctly handle EGAIN (and similar) recv()
2104   states. This has been fixed by introducing a new abstraction layer inside
2105   gtls.
2106 - added (internal) error codes to error messages; added redirector to
2107   web description of error codes
2108   closes bug http://bugzilla.adiscon.com/show_bug.cgi?id=20
2109 - disabled compile warnings caused by third-party libraries
2110 - reduced number of compile warnings in gcc's -pedantic mode
2111 - some minor documentation improvements
2112 - included all fixes from beta 3.17.5
2113 ---------------------------------------------------------------------------
2114 Version 3.19.7 (rgerhards), 2008-06-11
2115 - added new property replacer option "date-subseconds" that enables
2116   to query just the subsecond part of a high-precision timestamp
2117 - somewhat improved plain tcp syslog reliability by doing a connection
2118   check before sending. Credits to Martin Schuette for providing the
2119   idea. Details are available at
2120   http://blog.gerhards.net/2008/06/reliable-plain-tcp-syslog-once-again.html
2121 - made rsyslog tickless in the (usual and default) case that repeated
2122   message reduction is turned off. More info:
2123   http://blog.gerhards.net/2008/06/coding-to-save-environment.html
2124 - some build system cleanup, thanks to Michael Biebl
2125 - bugfix: compile under (Free)BSD failed due to some invalid library
2126   definitions - this is fixed now. Thanks to Michael Biebl for the patch.
2127 ---------------------------------------------------------------------------
2128 Version 3.19.6 (rgerhards), 2008-06-06
2129 - enhanced property replacer to support multiple regex matches
2130 - bugfix: part of permittedPeer structure was not correctly initialized
2131   thanks to varmojfekoj for spotting this
2132 - bugfix: off-by-one bug during certificate check
2133 - bugfix: removed some memory leaks in TLS code
2134 ---------------------------------------------------------------------------
2135 Version 3.19.5 (rgerhards), 2008-05-30
2136 - enabled Posix ERE expressions inside the property replacer
2137   (previously BRE was permitted only)
2138 - provided ability to specify that a regular expression submatch shall
2139   be used inside the property replacer
2140 - implemented in property replacer: if a regular expression does not match,
2141   it can now either return "**NO MATCH** (default, as before), a blank
2142   property or the full original property text
2143 - enhanced property replacer to support multiple regex matches
2144 ---------------------------------------------------------------------------
2145 Version 3.19.4 (rgerhards), 2008-05-27
2146 - implemented x509/certvalid gtls auth mode
2147 - implemented x509/name gtls auth mode (including wildcards)
2148 - changed fingerprint gtls auth mode to new format fingerprint
2149 - protected gtls error string function by a mutex. Without it, we
2150   could have a race condition in extreme cases. This was very remote,
2151   but now can no longer happen.
2152 - changed config directive name to reflect different use
2153   $ActionSendStreamDriverCertFingerprint is now
2154   $ActionSendStreamDriverPermittedPeer and can be used both for
2155   fingerprint and name authentication (similar to the input side)
2156 - bugfix: sender information (fromhost et al) was missing in imudp
2157   thanks to sandiso for reporting this bug
2158 - this release fully inplements IETF's syslog-transport-tls-12 plus
2159   the latest text changes Joe Salowey provided via email. Not included
2160   is ipAddress subjectAltName authentication, which I think will be
2161   dropped from the draft. I don't think there is any real need for it.
2162 This release also includes all bug fix up to today from the beta
2163 and stable branches. Most importantly, this means the bugfix for
2164 100% CPU utilization by imklog.
2165 ---------------------------------------------------------------------------
2166 Version 3.19.3 (rgerhards), 2008-05-21
2167 - added ability to authenticate the server against its certificate
2168   fingerprint
2169 - added ability for client to provide its fingerprint
2170 - added ability for server to obtain client cert's fingerprint
2171 - bugfix: small mem leak in omfwd on exit (strmdriver name was not freed)
2172 - bugfix: $ActionSendStreamDriver had no effect
2173 - bugfix: default syslog port was no longer used if none was
2174   configured. Thanks to varmojfekoj for the patch
2175 - bugfix: missing linker options caused build to fail on some
2176   systems. Thanks to Tiziano Mueller for the patch.
2177 ---------------------------------------------------------------------------
2178 Version 3.19.2 (rgerhards), 2008-05-16
2179 - bugfix: TCP input modules did incorrectly set fromhost property
2180   (always blank)
2181 - bugfix: imklog did not set fromhost property
2182 - added "fromhost-ip" property
2183   Note that adding this property changes the on-disk format for messages.
2184   However, that should not have any bad effect on existing spool files.
2185   But you will run into trouble if you create a spool file with this
2186   version and then try to process it with an older one (after a downgrade).
2187   Don't do that ;)
2188 - added "RSYSLOG_DebugFormat" canned template
2189 - bugfix: hostname and fromhost were swapped when a persisted message
2190   (in queued mode) was read in
2191 - bugfix: lmtcpclt, lmtcpsrv and lmgssutil did all link to the static
2192   runtime library, resulting in a large size increase (and potential
2193   "interesting" effects). Thanks to Michael Biebel for reporting the size
2194   issue.
2195 - bugfix: TLS server went into an endless loop in some situations.
2196   Thanks to Michael Biebl for reporting the problem.
2197 - fixed potential segfault due to invalid call to cfsysline
2198   thanks to varmojfekoj for the patch
2199 ---------------------------------------------------------------------------
2200 Version 3.19.1 (rgerhards), 2008-05-07
2201 - configure help for --enable-gnutls wrong - said default is "yes" but
2202   default actually is "no" - thanks to darix for pointing this out
2203 - file dirty.h was missing - thanks to darix for pointing this out
2204 - bugfix: man files were not properly distributed - thanks to
2205   darix for reporting and to Michael Biebl for help with the fix
2206 - some minor cleanup
2207 ---------------------------------------------------------------------------
2208 Version 3.19.0 (rgerhards), 2008-05-06
2209 - begins new devel branch version
2210 - implemented TLS for plain tcp syslog (this is also the world's first
2211   implementation of IETF's upcoming syslog-transport-tls draft)
2212 - partly rewritten and improved omfwd among others, now loads TCP
2213   code only if this is actually necessary
2214 - split of a "runtime library" for rsyslog - this is not yet a clean
2215   model, because some modularization is still outstanding. In theory,
2216   this shall enable other utilities but rsyslogd to use the same
2217   runtime
2218 - implemented im3195, the RFC3195 input as a plugin
2219 - changed directory structure, files are now better organized
2220 - a lot of cleanup in regard to modularization
2221 - -c option no longer must be the first option - thanks to varmjofekoj
2222   for the patch
2223 ---------------------------------------------------------------------------
2224 Version 3.18.7 (rgerhards), 2008-12-??
2225 - bugfix: the default for $DirCreateMode was 0644, and as such wrong.
2226   It has now been changed to 0700. For some background, please see
2227   http://lists.adiscon.net/pipermail/rsyslog/2009-April/001986.html
2228 - fixed a potential segfault condition with $AllowedSender directive
2229   On HUP, the root pointers were not properly cleaned up. Thanks to
2230   Michael Biebel, olgoat, and Juha Koho for reporting and analyzing
2231   the bug.
2232 - some legacy options were not correctly processed.
2233   Thanks to varmojfekoj for the patch.
2234 - doc bugfix: some spelling errors in man pages corrected. Thanks to
2235   Geoff Simmons for the patch.
2236 ---------------------------------------------------------------------------
2237 Version 3.18.6 (rgerhards), 2008-12-08
2238 - security bugfix: $AllowedSender was not honored, all senders were
2239   permitted instead (see http://www.rsyslog.com/Article322.phtml)
2240   (backport from v3-stable, v3.20.9)
2241 - minor bugfix: dual close() call on tcp session closure
2242 ---------------------------------------------------------------------------
2243 Version 3.18.5 (rgerhards), 2008-10-09
2244 - bugfix: imudp input module could cause segfault on HUP
2245   It did not properly de-init a variable acting as a linked list head.
2246   That resulted in trying to access freed memory blocks after the HUP.
2247 - bugfix:  rsyslogd could hang on HUP
2248   because getnameinfo() is not cancel-safe, but was not guarded against
2249   being cancelled. pthread_cancel() is routinely being called during
2250   HUP processing.
2251 - bugfix[minor]: if queue size reached light_delay mark, enqueuing
2252   could potentially be blocked for a longer period of time, which
2253   was not the behaviour desired.
2254 - doc bugfix: $ActionExecOnlyWhenPreviousIsSuspended was still misspelled
2255   as $...OnlyIfPrev... in some parts of the documentation. Thanks to 
2256   Lorenzo M. Catucci for reporting this bug.
2257 - added doc on malformed messages, cause and how to work-around, to the
2258   doc set
2259 - added doc on how to build from source repository
2260 ---------------------------------------------------------------------------
2261 Version 3.18.4 (rgerhards), 2008-09-18
2262 - bugfix: order-of magnitude issue with base-10 size definitions
2263   in config file parser. Could lead to invalid sizes, constraints
2264   etc for e.g. queue files and any other object whose size was specified
2265   in base-10 entities. Did not apply to binary entities. Thanks to
2266   RB for finding this bug and providing a patch.
2267 - bugfix: action was not called when system time was set backwards
2268   (until the previous time was reached again). There are still some
2269   side-effects when time is rolled back (A time rollback is really a bad
2270   thing to do, ideally the OS should issue pseudo time (like NetWare did)
2271   when the user tries to roll back time). Thanks to varmojfekoj for this
2272   patch.
2273 - doc bugfix: rsyslog.conf man page improved and minor nit fixed
2274   thanks to Lukas Kuklinek for the patch.
2275 - bugfix: error code -2025 was used for two different errors. queue full
2276   is now -2074 and -2025 is unique again. (did cause no real problem
2277   except for troubleshooting)
2278 - bugfix: default discard severity was incorrectly set to 4, which lead
2279   to discard-on-queue-full to be enabled by default. That could cause
2280   message loss where non was expected.  The default has now been changed
2281   to the correct value of 8, which disables the functionality. This
2282   problem applied both to the main message queue and the action queues.
2283   Thanks to Raoul Bhatia for pointing out this problem.
2284 - bugfix: option value for legacy -a option could not be specified,
2285   resulting in strange operations. Thanks to Marius Tomaschewski
2286   for the patch.
2287 - bugfix: colon after date should be ignored, but was not. This has
2288   now been corrected. Required change to the internal ParseTIMESTAMP3164()
2289   interface.
2290 ---------------------------------------------------------------------------
2291 Version 3.18.3 (rgerhards), 2008-08-18
2292 - bugfix: imfile could cause a segfault upon rsyslogd HUP and termination
2293   Thanks to lperr for an excellent bug report that helped detect this
2294   problem.
2295 - enhanced ommysql to support custom port to connect to server
2296   Port can be set via new $ActionOmmysqlServerPort config directive
2297   Note: this was a very minor change and thus deemed appropriate to be
2298   done in the stable release.
2299 - bugfix: misspelled config directive, previously was
2300   $MainMsgQueueWorkeTimeoutrThreadShutdown, is now
2301   $MainMsgQueueWorkerTimeoutThreadShutdown. Note that the misspelled
2302   directive is not preserved - if the misspelled directive was used
2303   (which I consider highly unlikely), the config file must be changed.
2304   Thanks to lperr for reporting the bug.
2305 - disabled flow control for imuxsock, as it could cause system hangs
2306   under some circumstances. The devel (3.21.3 and above) will
2307   re-enable it and provide enhanced configurability to overcome the
2308   problems if they occur.
2309 ---------------------------------------------------------------------------
2310 Version 3.18.2 (rgerhards), 2008-08-08
2311 - merged in IPv6 forwarding address bugfix from v2-stable
2312 ---------------------------------------------------------------------------
2313 Version 3.18.1 (rgerhards), 2008-07-21
2314 - bugfix: potential segfault in creating message mutex in non-direct queue
2315   mode. rsyslogd segfaults on freeeBSD 7.0 (an potentially other platforms)
2316   if an action queue is running in any other mode than non-direct. The
2317   same problem can potentially be triggered by some main message queue
2318   settings. In any case, it will manifest during rsylog's startup. It is
2319   unlikely to happen after a successful startup (the only window of
2320   exposure may be a relatively seldom executed action running in queued
2321   mode). This has been corrected. Thank to HKS for point out the problem.
2322 - bugfix: priority was incorrectly calculated on FreeBSD 7,
2323   because the LOG_MAKEPRI() C macro has a different meaning there (it
2324   is just a simple addition of faciltity and severity). I have changed
2325   this to use own, consistent, code for PRI calculation. [Backport from
2326   3.19.10]
2327 - bugfix: remove PRI part from kernel message if it is present
2328   Thanks to Michael Biebl for reporting this bug
2329 - bugfix: mark messages were not correctly written to text log files
2330   the markmessageinterval was not correctly propagated to all places
2331   where it was needed. This resulted in rsyslog using the default
2332   (20 minutes) in some code pathes, what looked to the user like mark
2333   messages were never written.
2334 - added a new property replacer option "sp-if-no-1st-sp" to cover
2335   a problem with RFC 3164 based interpreation of tag separation. While
2336   it is a generic approach, it fixes a format problem introduced in
2337   3.18.0, where kernel messages no longer had a space after the tag.
2338   This is done by a modifcation of the default templates.
2339   Please note that this may affect some messages where there intentionally
2340   is no space between the tag and the first character of the message
2341   content. If so, this needs to be worked around via a specific
2342   template. However, we consider this scenario to be quite remote and,
2343   even if it exists, it is not expected that it will actually cause
2344   problems with log parsers (instead, we assume the new default template
2345   behaviour may fix previous problems with log parsers due to the 
2346   missing space).
2347 - bugfix: imklog module was not correctly compiled for GNU/kFreeBSD.
2348   Thanks to Petr Salinger for the patch
2349 - doc bugfix: property replacer options secpath-replace and
2350   secpath-drop were not documented
2351 - doc bugfix: fixed some typos in rsyslog.conf man page
2352 - fixed typo in source comment  - thanks to Rio Fujita
2353 - some general cleanup (thanks to Michael Biebl)
2354 ---------------------------------------------------------------------------
2355 Version 3.18.0 (rgerhards), 2008-07-11
2356 - begun a new v3-stable based on former 3.17.4 beta plus patches to
2357   previous v3-stable
2358 - bugfix in RainerScript: syntax error was not always detected
2359 ---------------------------------------------------------------------------
2360 Version 3.17.5 (rgerhards), 2008-06-27
2361 - added doc: howto set up a reliable connection to remote server via
2362   queued mode (and plain tcp protocol)
2363 - bugfix: comments after actions were not properly treated. For some
2364   actions (e.g. forwarding), this could also lead to invalid configuration
2365 ---------------------------------------------------------------------------
2366 Version 3.17.4 (rgerhards), 2008-06-16
2367 - changed default for $KlogSymbolLookup to "off". The directive is
2368   also scheduled for removal in a later version. This was necessary
2369   because on kernels >= 2.6, the kernel does the symbol lookup itself. The
2370   imklog lookup logic then breaks the log message and makes it unusable.
2371 ---------------------------------------------------------------------------
2372 Version 3.17.3 (rgerhards), 2008-05-28
2373 - bugfix: imklog went into an endless loop if a PRI value was inside
2374   a kernel log message (unusual case under Linux, frequent under BSD)
2375 ---------------------------------------------------------------------------
2376 Version 3.17.2 (rgerhards), 2008-05-04
2377 - this version is the new beta, based on 3.17.1 devel feature set
2378 - merged in imklog bug fix from v3-stable (3.16.1)
2379 ---------------------------------------------------------------------------
2380 Version 3.17.1 (rgerhards), 2008-04-15
2381 - removed dependency on MAXHOSTNAMELEN as much as it made sense.
2382   GNU/Hurd does not define it (because it has no limit), and we have taken
2383   care for cases where it is undefined now. However, some very few places
2384   remain where IMHO it currently is not worth fixing the code. If it is
2385   not defined, we have used a generous value of 1K, which is above IETF
2386   RFC's on hostname length at all. The memory consumption is no issue, as
2387   there are only a handful of this buffers allocated *per run* -- that's
2388   also the main reason why we consider it not worth to be fixed any further.
2389 - enhanced legacy syslog parser to handle slightly malformed messages
2390   (with a space in front of the timestamp) - at least HP procurve is
2391   known to do that and I won't outrule that others also do it. The 
2392   change looks quite unintrusive and so we added it to the parser.
2393 - implemented klogd functionality for BSD
2394 - implemented high precision timestamps for the kernel log. Thanks to
2395   Michael Biebl for pointing out that the kernel log did not have them.
2396 - provided ability to discard non-kernel messages if they are present
2397   in the kernel log (seems to happen on BSD)
2398 - implemented $KLogInternalMsgFacility config directive
2399 - implemented $KLogPermitNonKernelFacility config directive
2400 Plus a number of bugfixes that were applied to v3-stable and beta
2401 branches (not mentioned here in detail).
2402 ---------------------------------------------------------------------------
2403 Version 3.17.0 (rgerhards), 2008-04-08
2404 - added native ability to send mail messages
2405 - removed no longer needed file relptuil.c/.h
2406 - added $ActionExecOnlyOnceEveryInterval config directive
2407 - bugfix: memory leaks in script engine
2408 - bugfix: zero-length strings were not supported in object
2409   deserializer
2410 - properties are now case-insensitive everywhere (script, filters,
2411   templates)
2412 - added the capability to specify a processing (actually dequeue)
2413   timeframe with queues - so things can be configured to be done
2414   at off-peak hours
2415 - We have removed the 32 character size limit (from RFC3164) on the
2416   tag. This had bad effects on existing envrionments, as sysklogd didn't
2417   obey it either (probably another bug in RFC3164...). We now receive
2418   the full size, but will modify the outputs so that only 32 characters
2419   max are used by default. If you need large tags in the output, you need
2420   to provide custom templates.
2421 - changed command line processing. -v, -M, -c options are now parsed
2422   and processed before all other options. Inter-option dependencies
2423   have been relieved. Among others, permits to specify intial module
2424   load path via -M only (not the environment) which makes it much
2425   easier to work with non-standard module library locations. Thanks
2426   to varmojfekoj for suggesting this change. Matches bugzilla bug 55.
2427 - bugfix: some messages were emited without hostname
2428 Plus a number of bugfixes that were applied to v3-stable and beta
2429 branches (not mentioned here in detail).
2430 ---------------------------------------------------------------------------
2431 Version 3.16.3 (rgerhards), 2008-07-11
2432 - updated information on rsyslog packages
2433 - bugfix: memory leak in disk-based queue modes
2434 ---------------------------------------------------------------------------
2435 Version 3.16.2 (rgerhards), 2008-06-25
2436 - fixed potential segfault due to invalid call to cfsysline
2437   thanks to varmojfekoj for the patch
2438 - bugfix: some whitespaces where incorrectly not ignored when parsing
2439   the config file. This is now corrected. Thanks to Michael Biebl for
2440   pointing out the problem.
2441 ---------------------------------------------------------------------------
2442 Version 3.16.1 (rgerhards), 2008-05-02
2443 - fixed a bug in imklog which lead to startup problems (including
2444   segfault) on some platforms under some circumsances. Thanks to
2445   Vieri for reporting this bug and helping to troubleshoot it.
2446 ---------------------------------------------------------------------------
2447 Version 3.16.0 (rgerhards), 2008-04-24
2448 - new v3-stable (3.16.x) based on beta 3.15.x (RELP support)
2449 - bugfix: omsnmp had a too-small sized buffer for hostname+port. This
2450   could not lead to a segfault, as snprintf() was used, but could cause
2451   some trouble with extensively long hostnames.
2452 - applied patch from Tiziano Müller to remove some compiler warnings
2453 - added gssapi overview/howto thanks to Peter Vrabec
2454 - changed some files to grant LGPLv3 extended persmissions on top of GPLv3
2455   this also is the first sign of something that will evolve into a
2456   well-defined "rsyslog runtime library"
2457 ---------------------------------------------------------------------------
2458 Version 3.15.1 (rgerhards), 2008-04-11
2459 - bugfix: some messages were emited without hostname
2460 - disabled atomic operations for the time being because they introduce some
2461   cross-platform trouble - need to see how to fix this in the best 
2462   possible way
2463 - bugfix: zero-length strings were not supported in object
2464   deserializer
2465 - added librelp check via PKG_CHECK thanks to Michael Biebl's patch
2466 - file relputil.c deleted, is not actually needed
2467 - added more meaningful error messages to rsyslogd (when some errors
2468   happens during startup)
2469 - bugfix: memory leaks in script engine
2470 - bugfix: $hostname and $fromhost in RainerScript did not work
2471 This release also includes all changes applied to the stable versions
2472 up to today.
2473 ---------------------------------------------------------------------------
2474 Version 3.15.0 (rgerhards), 2008-04-01
2475 - major new feature: imrelp/omrelp support reliable delivery of syslog
2476   messages via the RELP protocol and librelp (http://www.librelp.com).
2477   Plain tcp syslog, so far the best reliability solution, can lose
2478   messages when something goes wrong or a peer goes down. With RELP,
2479   this can no longer happen. See imrelp.html for more details.
2480 - bugfix: rsyslogd was no longer build by default; man pages are 
2481   only installed if corresponding option is selected. Thanks to
2482   Michael Biebl for pointing these problems out.
2483 ---------------------------------------------------------------------------
2484 Version 3.14.2 (rgerhards), 2008-04-09
2485 - bugfix: segfault with expression-based filters
2486 - bugfix: omsnmp did not deref errmsg object on exit (no bad effects caused)
2487 - some cleanup
2488 - bugfix: imklog did not work well with kernel 2.6+. Thanks to Peter
2489   Vrabec for patching it based on the development in sysklogd - and thanks
2490   to the sysklogd project for upgrading klogd to support the new
2491   functionality
2492 - some cleanup in imklog
2493 - bugfix: potential segfault in imklog when kernel is compiled without
2494   /proc/kallsyms and the file System.map is missing. Thanks to
2495   Andrea Morandi for pointing it out and suggesting a fix.
2496 - bugfixes, credits to varmojfekoj:
2497   * reset errno before printing a warning message
2498   * misspelled directive name in code processing legacy options
2499 - bugfix: some legacy options not correctly interpreted - thanks to
2500   varmojfekoj for the patch
2501 - improved detection of modules being loaded more than once
2502   thanks to varmojfekoj for the patch
2503 ---------------------------------------------------------------------------
2504 Version 3.14.1 (rgerhards), 2008-04-04
2505 - bugfix: some messages were emited without hostname
2506 - bugfix: rsyslogd was no longer build by default; man pages are 
2507   only installed if corresponding option is selected. Thanks to
2508   Michael Biebl for pointing these problems out.
2509 - bugfix: zero-length strings were not supported in object
2510   deserializer
2511 - disabled atomic operations for this stable build as it caused
2512   platform problems
2513 - bugfix: memory leaks in script engine
2514 - bugfix: $hostname and $fromhost in RainerScript did not work
2515 - bugfix: some memory leak when queue is runing in disk mode
2516 - man pages improved thanks to varmofekoj and Peter Vrabec
2517 - We have removed the 32 character size limit (from RFC3164) on the
2518   tag. This had bad effects on existing envrionments, as sysklogd didn't
2519   obey it either (probably another bug in RFC3164...). We now receive
2520   the full size, but will modify the outputs so that only 32 characters
2521   max are used by default. If you need large tags in the output, you need
2522   to provide custom templates.
2523 - bugfix: some memory leak when queue is runing in disk mode
2524 ---------------------------------------------------------------------------
2525 Version 3.14.0 (rgerhards), 2008-04-02
2526 An interim version was accidently released to the web. It was named 3.14.0.
2527 To avoid confusion, we have not assigned this version number to any
2528 official release. If you happen to use 3.14.0, please update to 3.14.1.
2529 ---------------------------------------------------------------------------
2530 Version 3.13.0-dev0 (rgerhards), 2008-03-31
2531 - bugfix: accidently set debug option in 3.12.5 reset to production
2532   This option prevented dlclose() to be called. It had no real bad effects,
2533   as the modules were otherwise correctly deinitialized and dlopen()
2534   supports multiple opens of the same module without any memory footprint.
2535 - removed --enable-mudflap, added --enable-valgrind ./configure setting
2536 - bugfix: tcp receiver could segfault due to uninitialized variable
2537 - docfix: queue doc had a wrong directive name that prevented max worker
2538   threads to be correctly set
2539 - worked a bit on atomic memory operations to support problem-free
2540   threading (only at non-intrusive places)
2541 - added a --enable/disable-rsyslogd configure option so that
2542   source-based packaging systems can build plugins without the need
2543   to compile rsyslogd
2544 - some cleanup
2545 - test of potential new version number scheme
2546 ---------------------------------------------------------------------------
2547 Version 3.12.5 (rgerhards), 2008-03-28
2548 - changed default for "last message repeated n times", which is now
2549   off by default
2550 - implemented backward compatibility commandline option parsing
2551 - automatically generated compatibility config lines are now also
2552   logged so that a user can diagnose problems with them
2553 - added compatibility mode for -a, -o and -p options
2554 - compatibility mode processing finished
2555 - changed default file output format to include high-precision timestamps
2556 - added a buid-in template for previous syslogd file format
2557 - added new $ActionFileDefaultTemplate directive
2558 - added support for high-precision timestamps when receiving legacy
2559   syslog messages
2560 - added new $ActionForwardDefaultTemplate directive
2561 - added new $ActionGSSForwardDefaultTemplate directive
2562 - added build-in templates for easier configuration
2563 - bugfix: fixed small memory leak in tcpclt.c
2564 - bugfix: fixed small memory leak in template regular expressions
2565 - bugfix: regular expressions inside property replacer did not work
2566   properly
2567 - bugfix: QHOUR and HHOUR properties were wrongly calculated
2568 - bugfix: fixed memory leaks in stream class and imfile
2569 - bugfix: $ModDir did invalid bounds checking, potential overlow in
2570   dbgprintf() - thanks to varmojfekoj for the patch
2571 - bugfix: -t and -g legacy options max number of sessions had a wrong
2572   and much too high value
2573 ---------------------------------------------------------------------------
2574 Version 3.12.4 (rgerhards), 2008-03-25
2575 - Greatly enhanced rsyslogd's file write performance by disabling
2576   file syncing capability of output modules by default. This
2577   feature is usually not required, not useful and an extreme performance
2578   hit (both to rsyslogd as well as the system at large). Unfortunately,
2579   most users enable it by default, because it was most intuitive to enable
2580   it in plain old sysklogd syslog.conf format. There is now the
2581   $ActionFileEnableSync config setting which must be enabled in order to
2582   support syncing. By default it is off. So even if the old-format config
2583   lines request syncing, it is not done unless explicitely enabled. I am
2584   sure this is a very useful change and not a risk at all. I need to think
2585   if I undo it under compatibility mode, but currently this does not
2586   happen (I fear a lot of lazy users will run rsyslogd in compatibility
2587   mode, again bringing up this performance problem...).
2588 - added flow control options to other input sources
2589 - added $HHOUR and $QHOUR system properties - can be used for half- and
2590   quarter-hour logfile rotation
2591 - changed queue's discard severities default value to 8 (do not discard)
2592   to prevent unintentional message loss
2593 - removed a no-longer needed callback from the output module 
2594   interface. Results in reduced code complexity.
2595 - bugfix/doc: removed no longer supported -h option from man page
2596 - bugfix: imklog leaked several hundered KB on each HUP. Thanks to
2597   varmojfekoj for the patch
2598 - bugfix: potential segfault on module unload. Thanks to varmojfekoj for
2599   the patch
2600 - bugfix: fixed some minor memory leaks
2601 - bugfix: fixed some slightly invalid memory accesses
2602 - bugfix: internally generated messages had "FROMHOST" property not set
2603 ---------------------------------------------------------------------------
2604 Version 3.12.3 (rgerhards), 2008-03-18
2605 - added advanced flow control for congestion cases (mode depending on message
2606   source and its capablity to be delayed without bad side effects)
2607 - bugfix: $ModDir should not be reset on $ResetConfig - this can cause a lot
2608   of confusion and there is no real good reason to do so. Also conflicts with
2609   the new -M option and environment setting.
2610 - bugfix: TCP and GSSAPI framing mode variable was uninitialized, leading to
2611   wrong framing (caused, among others, interop problems)
2612 - bugfix: TCP (and GSSAPI) octet-counted frame did not work correctly in all
2613   situations. If the header was split across two packet reads, it was invalidly
2614   processed, causing loss or modification of messages.
2615 - bugfix: memory leak in imfile
2616 - bugfix: duplicate public symbol in omfwd and omgssapi could lead to
2617   segfault. thanks to varmojfekoj for the patch.
2618 - bugfix: rsyslogd aborted on sigup - thanks to varmojfekoj for the patch
2619 - some more internal cleanup ;)
2620 - begun relp modules, but these are not functional yet
2621 - Greatly enhanced rsyslogd's file write performance by disabling
2622   file syncing capability of output modules by default. This
2623   feature is usually not required, not useful and an extreme performance
2624   hit (both to rsyslogd as well as the system at large). Unfortunately,
2625   most users enable it by default, because it was most intuitive to enable
2626   it in plain old sysklogd syslog.conf format. There is now a new config
2627   setting which must be enabled in order to support syncing. By default it
2628   is off. So even if the old-format config lines request syncing, it is
2629   not done unless explicitely enabled. I am sure this is a very useful
2630   change and not a risk at all. I need to think if I undo it under
2631   compatibility mode, but currently this does not happen (I fear a lot of
2632   lazy users will run rsyslogd in compatibility mode, again bringing up
2633   this performance problem...).
2634 ---------------------------------------------------------------------------
2635 Version 3.12.2 (rgerhards), 2008-03-13
2636 - added RSYSLOGD_MODDIR environment variable
2637 - added -M rsyslogd option (allows to specify module directory location)
2638 - converted net.c into a loadable library plugin
2639 - bugfix: debug module now survives unload of loadable module when
2640   printing out function call data
2641 - bugfix: not properly initialized data could cause several segfaults if
2642   there were errors in the config file - thanks to varmojfekoj for the patch
2643 - bugfix: rsyslogd segfaulted when imfile read an empty line - thanks
2644   to Johnny Tan for an excellent bug report
2645 - implemented dynamic module unload capability (not visible to end user)
2646 - some more internal cleanup
2647 - bugfix: imgssapi segfaulted under some conditions; this fix is actually
2648   not just a fix but a change in the object model. Thanks to varmojfekoj
2649   for providing the bug report, an initial fix and lots of good discussion
2650   that lead to where we finally ended up.
2651 - improved session recovery when outbound tcp connection breaks, reduces
2652   probability of message loss at the price of a highly unlikely potential
2653   (single) message duplication
2654 ---------------------------------------------------------------------------
2655 Version 3.12.1 (rgerhards), 2008-03-06
2656 - added library plugins, which can be automatically loaded
2657 - bugfix: actions were not correctly retried; caused message loss
2658 - changed module loader to automatically add ".so" suffix if not
2659   specified (over time, this shall also ease portability of config
2660   files)
2661 - improved debugging support; debug runtime options can now be set via
2662   an environment variable
2663 - bugfix: removed debugging code that I forgot to remove before releasing
2664   3.12.0 (does not cause harm and happened only during startup)
2665 - added support for the MonitorWare syslog MIB to omsnmp
2666 - internal code improvements (more code converted into classes)
2667 - internal code reworking of the imtcp/imgssapi module
2668 - added capability to ignore client-provided timestamp on unix sockets and
2669   made this mode the default; this was needed, as some programs (e.g. sshd)
2670   log with inconsistent timezone information, what messes up the local
2671   logs (which by default don't even contain time zone information). This
2672   seems to be consistent with what sysklogd did for the past four years.
2673   Alternate behaviour may be desirable if gateway-like processes send
2674   messages via the local log slot - in this case, it can be enabled
2675   via the $InputUnixListenSocketIgnoreMsgTimestamp and
2676   $SystemLogSocketIgnoreMsgTimestamp config directives
2677 - added ability to compile on HP UX; verified that imudp worked on HP UX;
2678   however, we are still in need of people trying out rsyslogd on HP UX,
2679   so it can not yet be assumed it runs there
2680 - improved session recovery when outbound tcp connection breaks, reduces
2681   probability of message loss at the price of a highly unlikely potential
2682   (single) message duplication
2683 ---------------------------------------------------------------------------
2684 Version 3.12.0 (rgerhards), 2008-02-28
2685 - added full expression support for filters; filters can now contain
2686   arbitrary complex boolean, string and arithmetic expressions
2687 ---------------------------------------------------------------------------
2688 Version 3.11.6 (rgerhards), 2008-02-27
2689 - bugfix: gssapi libraries were still linked to rsyslog core, what should
2690   no longer be necessary. Applied fix by Michael Biebl to solve this.
2691 - enabled imgssapi to be loaded side-by-side with imtcp
2692 - added InputGSSServerPermitPlainTCP config directive
2693 - split imgssapi source code somewhat from imtcp
2694 - bugfix: queue cancel cleanup handler could be called with
2695   invalid pointer if dequeue failed
2696 - bugfix: rsyslogd segfaulted on second SIGHUP
2697   tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=38
2698 - improved stability of queue engine
2699 - bugfix: queue disk file were not properly persisted when 
2700   immediately after closing an output file rsyslog was stopped
2701   or huped (the new output file open must NOT have happend at
2702   that point) - this lead to a sparse and invalid queue file
2703   which could cause several problems to the engine (unpredictable
2704   results). This situation should have happened only in very
2705   rare cases. tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=40
2706 - bugfix: during queue shutdown, an assert invalidly triggered when
2707   the primary queue's DA worker was terminated while the DA queue's
2708   regular worker was still executing. This could result in a segfault
2709   during shutdown.
2710   tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=41
2711 - bugfix: queue properties sizeOnDisk, bytesRead were persisted to 
2712   disk with wrong data type (long instead of int64) - could cause
2713   problems on 32 bit machines
2714 - bugfix: queue aborted when it was shut down, DA-enabled, DA mode
2715   was just initiated but not fully initialized (a race condition)
2716 - bugfix: imfile could abort under extreme stress conditions
2717   (when it was terminated before it could open all of its
2718   to be monitored files)
2719 - applied patch from varmojfekoj to fix an issue with compatibility 
2720   mode and default module directories (many thanks!):
2721   I've also noticed a bug in the compatibility code; the problem is that 
2722   options are parsed before configuration file so options which need a 
2723   module to be loaded will currently ignore any $moddir directive. This 
2724   can be fixed by moving legacyOptsHook() after config file parsing. 
2725   (see the attached patch) This goes against the logical order of 
2726   processing, but the legacy options are only few and it doesn't seem to 
2727   be a problem.
2728 - bugfix: object property deserializer did not handle negative numbers
2729 ---------------------------------------------------------------------------
2730 Version 3.11.5 (rgerhards), 2008-02-25
2731 - new imgssapi module, changed imtcp module - this enables to load/package
2732   GSSAPI support separately - thanks to varmojfekoj for the patch
2733 - compatibility mode (the -c option series) is now at least partly
2734   completed - thanks to varmojfekoj for the patch
2735 - documentation for imgssapi and imtcp added
2736 - duplicate $ModLoad's for the same module are now detected and
2737   rejected -- thanks to varmojfekoj for the patch
2738 ---------------------------------------------------------------------------
2739 Version 3.11.4 (rgerhards), 2008-02-21
2740 - bugfix: debug.html was missing from release tarball - thanks to Michael
2741   Biebl for bringing this to my attention
2742 - some internal cleanup on the stringbuf object calling interface
2743 - general code cleanup and further modularization
2744 - $MainMessageQueueDiscardSeverity can now also handle textual severities
2745   (previously only integers)
2746 - bugfix: message object was not properly synchronized when the 
2747   main queue had a single thread and non-direct action queues were used
2748 - some documentation improvements
2749 ---------------------------------------------------------------------------
2750 Version 3.11.3 (rgerhards), 2008-02-18
2751 - fixed a bug in imklog which lead to duplicate message content in
2752   kernel logs
2753 - added support for better plugin handling in libdbi (we contributed
2754   a patch to do that, we just now need to wait for the next libdbi
2755   version)
2756 - bugfix: fixed abort when invalid template was provided to an action
2757   bug http://bugzilla.adiscon.com/show_bug.cgi?id=4
2758 - re-instantiated SIGUSR1 function; added SIGUSR2 to generate debug
2759   status output
2760 - added some documentation on runtime-debug settings
2761 - slightly improved man pages for novice users
2762 ---------------------------------------------------------------------------
2763 Version 3.11.2 (rgerhards), 2008-02-15
2764 - added the capability to monitor text files and process their content
2765   as syslog messages (including forwarding)
2766 - added support for libdbi, a database abstraction layer. rsyslog now
2767   also supports the following databases via dbi drivers:
2768   * Firebird/Interbase
2769   * FreeTDS (access to MS SQL Server and Sybase)
2770   * SQLite/SQLite3
2771   * Ingres (experimental)
2772   * mSQL (experimental)
2773   * Oracle (experimental)
2774   Additional drivers may be provided by the libdbi-drivers project, which
2775   can be used by rsyslog as soon as they become available.
2776 - removed some left-over unnecessary dbgprintf's (cluttered screen,
2777   cosmetic)
2778 - doc bugfix: html documentation for omsnmp was missing
2779 ---------------------------------------------------------------------------
2780 Version 3.11.1 (rgerhards), 2008-02-12
2781 - SNMP trap sender added thanks to Andre Lorbach (omsnmp)
2782 - added input-plugin interface specification in form of a (copy) template
2783   input module
2784 - applied documentation fix by Michael Biebl -- many thanks!
2785 - bugfix: immark did not have MARK flags set...
2786 - added x-info field to rsyslogd startup/shutdown message. Hopefully
2787   points users to right location for further info (many don't even know
2788   they run rsyslog ;))
2789 - bugfix: trailing ":" of tag was lost while parsing legacy syslog messages
2790   without timestamp - thanks to Anders Blomdell for providing a patch!
2791 - fixed a bug in stringbuf.c related to STRINGBUF_TRIM_ALLOCSIZE, which
2792   wasn't supposed to be used with rsyslog. Put a warning message up that
2793   tells this feature is not tested and probably not worth the effort.
2794   Thanks to Anders Blomdell fro bringing this to our attention
2795 - somewhat improved performance of string buffers
2796 - fixed bug that caused invalid treatment of tabs (HT) in rsyslog.conf
2797 - bugfix: setting for $EscapeCopntrolCharactersOnReceive was not 
2798   properly initialized
2799 - clarified usage of space-cc property replacer option
2800 - improved abort diagnostic handler
2801 - some initial effort for malloc/free runtime debugging support
2802 - bugfix: using dynafile actions caused rsyslogd abort
2803 - fixed minor man errors thanks to Michael Biebl
2804 ---------------------------------------------------------------------------
2805 Version 3.11.0 (rgerhards), 2008-01-31
2806 - implemented queued actions
2807 - implemented simple rate limiting for actions
2808 - implemented deliberate discarding of lower priority messages over higher
2809   priority ones when a queue runs out of space
2810 - implemented disk quotas for disk queues
2811 - implemented the $ActionResumeRetryCount config directive
2812 - added $ActionQueueFilename config directive
2813 - added $ActionQueueSize config directive
2814 - added $ActionQueueHighWaterMark config directive
2815 - added $ActionQueueLowWaterMark config directive
2816 - added $ActionQueueDiscardMark config directive
2817 - added $ActionQueueDiscardSeverity config directive
2818 - added $ActionQueueCheckpointInterval config directive
2819 - added $ActionQueueType config directive
2820 - added $ActionQueueWorkerThreads config directive
2821 - added $ActionQueueTimeoutshutdown config directive
2822 - added $ActionQueueTimeoutActionCompletion config directive
2823 - added $ActionQueueTimeoutenQueue config directive
2824 - added $ActionQueueTimeoutworkerThreadShutdown config directive
2825 - added $ActionQueueWorkerThreadMinimumMessages config directive
2826 - added $ActionQueueMaxFileSize config directive
2827 - added $ActionQueueSaveonShutdown config directive
2828 - addded $ActionQueueDequeueSlowdown config directive
2829 - addded $MainMsgQueueDequeueSlowdown config directive
2830 - bugfix: added forgotten docs to package
2831 - improved debugging support
2832 - fixed a bug that caused $MainMsgQueueCheckpointInterval to work incorrectly
2833 - when a long-running action needs to be cancelled on shutdown, the message
2834   that was processed by it is now preserved. This finishes support for
2835   guaranteed delivery of messages (if the output supports it, of course)
2836 - fixed bug in output module interface, see
2837   http://sourceforge.net/tracker/index.php?func=detail&aid=1881008&group_id=123448&atid=696552
2838 - changed the ommysql output plugin so that the (lengthy) connection
2839   initialization now takes place in message processing. This works much
2840   better with the new queued action mode (fast startup)
2841 - fixed a bug that caused a potential hang in file and fwd output module
2842   varmojfekoj provided the patch - many thanks!
2843 - bugfixed stream class offset handling on 32bit platforms
2844 ---------------------------------------------------------------------------
2845 Version 3.10.3 (rgerhards), 2008-01-28
2846 - fixed a bug with standard template definitions (not a big deal) - thanks
2847   to varmojfekoj for spotting it
2848 - run-time instrumentation added
2849 - implemented disk-assisted queue mode, which enables on-demand disk
2850   spooling if the queue's in-memory queue is exhausted
2851 - implemented a dynamic worker thread pool for processing incoming
2852   messages; workers are started and shut down as need arises
2853 - implemented a run-time instrumentation debug package
2854 - implemented the $MainMsgQueueSaveOnShutdown config directive
2855 - implemented the $MainMsgQueueWorkerThreadMinimumMessages config directive
2856 - implemented the $MainMsgQueueTimeoutWorkerThreadShutdown config directive
2857 ---------------------------------------------------------------------------
2858 Version 3.10.2 (rgerhards), 2008-01-14
2859 - added the ability to keep stop rsyslogd without the need to drain
2860   the main message queue. In disk queue mode, rsyslog continues to
2861   run from the point where it stopped. In case of a system failure, it
2862   continues to process messages from the last checkpoint.
2863 - fixed a bug that caused a segfault on startup when no $WorkDir directive
2864   was specified in rsyslog.conf
2865 - provided more fine-grain control over shutdown timeouts and added a
2866   way to specify the enqueue timeout when the main message queue is full
2867 - implemented $MainMsgQueueCheckpointInterval config directive
2868 - implemented $MainMsgQueueTimeoutActionCompletion config directive
2869 - implemented $MainMsgQueueTimeoutEnqueue config directive
2870 - implemented $MainMsgQueueTimeoutShutdown config directive
2871 ---------------------------------------------------------------------------
2872 Version 3.10.1 (rgerhards), 2008-01-10
2873 - implemented the "disk" queue mode. However, it currently is of very
2874   limited use, because it does not support persistence over rsyslogd
2875   runs. So when rsyslogd is stopped, the queue is drained just as with
2876   the in-memory queue modes. Persistent queues will be a feature of
2877   the next release.
2878 - performance-optimized string class, should bring an overall improvement
2879 - fixed a memory leak in imudp -- thanks to varmojfekoj for the patch
2880 - fixed a race condition that could lead to a rsyslogd hang when during
2881   HUP or termination
2882 - done some doc updates
2883 - added $WorkDirectory config directive
2884 - added $MainMsgQueueFileName config directive
2885 - added $MainMsgQueueMaxFileSize config directive
2886 ---------------------------------------------------------------------------
2887 Version 3.10.0 (rgerhards), 2008-01-07
2888 - implemented input module interface and initial input modules
2889 - enhanced threading for input modules (each on its own thread now)
2890 - ability to bind UDP listeners to specific local interfaces/ports and
2891   ability to run multiple of them concurrently
2892 - added ability to specify listen IP address for UDP syslog server
2893 - license changed to GPLv3
2894 - mark messages are now provided by loadble module immark
2895 - rklogd is no longer provided. Its functionality has now been taken over
2896   by imklog, a loadable input module. This offers a much better integration
2897   into rsyslogd and makes sure that the kernel logger process is brought
2898   up and down at the appropriate times
2899 - enhanced $IncludeConfig directive to support wildcard characters
2900   (thanks to Michael Biebl)
2901 - all inputs are now implemented as loadable plugins
2902 - enhanced threading model: each input module now runs on its own thread
2903 - enhanced message queue which now supports different queueing methods
2904   (among others, this can be used for performance fine-tuning)
2905 - added a large number of new configuration directives for the new
2906   input modules
2907 - enhanced multi-threading utilizing a worker thread pool for the
2908   main message queue
2909 - compilation without pthreads is no longer supported
2910 - much cleaner code due to new objects and removal of single-threading
2911   mode
2912 ---------------------------------------------------------------------------
2913 Version 2.0.8 V2-STABLE (rgerhards), 2008-??-??
2914 - bugfix: ompgsql did not detect problems in sql command execution
2915   this could cause loss of messages. The handling was correct if the
2916   connection broke, but not if there was a problem with statement
2917   execution. The most probable case for such a case would be invalid
2918   sql inside the template, and this is now much easier to diagnose.
2919 - doc bugfix: default for $DirCreateMode incorrectly stated
2920 ---------------------------------------------------------------------------
2921 Version 2.0.7 V2-STABLE (rgerhards), 2008-04-14
2922 - bugfix: the default for $DirCreateMode was 0644, and as such wrong.
2923   It has now been changed to 0700. For some background, please see
2924   http://lists.adiscon.net/pipermail/rsyslog/2009-April/001986.html
2925 - bugfix: "$CreateDirs off" also disabled file creation
2926   Thanks to William Tisater for analyzing this bug and providing a patch.
2927   The actual code change is heavily based on William's patch.
2928 - bugfix: memory leak in ompgsql
2929   Thanks to Ken for providing the patch
2930 - bugfix: potential memory leak in msg.c
2931   This one did not surface yet and the issue was actually found due to
2932   a problem in v4 - but better fix it here, too
2933 ---------------------------------------------------------------------------
2934 Version 2.0.6 V2-STABLE (rgerhards), 2008-08-07
2935 - bugfix: memory leaks in rsyslogd, primarily in singlethread mode
2936   Thanks to Frederico Nunez for providing the fix
2937 - bugfix: copy&paste error lead to dangling if - this caused a very minor
2938   issue with re-formatting a RFC3164 date when the message was invalidly
2939   formatted and had a colon immediately after the date. This was in the
2940   code for some years (even v1 had it) and I think it never had any
2941   effect at all in practice. Though, it should be fixed - but definitely
2942   nothing to worry about.
2943 ---------------------------------------------------------------------------
2944 Version 2.0.6 V2-STABLE (rgerhards), 2008-08-07
2945 - bugfix: IPv6 addresses could not be specified in forwarding actions
2946   New syntax @[addr]:port introduced to enable that. Root problem was IPv6
2947   addresses contain colons. (backport from 3.21.3)
2948 ---------------------------------------------------------------------------
2949 Version 2.0.5 STABLE (rgerhards), 2008-05-15
2950 - bugfix: regular expressions inside property replacer did not work
2951   properly
2952 - adapted to liblogging 0.7.1+
2953 ---------------------------------------------------------------------------
2954 Version 2.0.4 STABLE (rgerhards), 2008-03-27
2955 - bugfix: internally generated messages had "FROMHOST" property not set
2956 - bugfix: continue parsing if tag is oversize (discard oversize part) - thanks
2957   to mclaughlin77@gmail.com for the patch
2958 - added $HHOUR and $QHOUR system properties - can be used for half- and
2959   quarter-hour logfile rotation
2960 ---------------------------------------------------------------------------
2961 Version 2.0.3 STABLE (rgerhards), 2008-03-12
2962 - bugfix: setting for $EscapeCopntrolCharactersOnReceive was not 
2963   properly initialized
2964 - bugfix: resolved potential segfault condition on HUP (extremely
2965   unlikely to happen in practice), for details see tracker:
2966   http://bugzilla.adiscon.com/show_bug.cgi?id=38
2967 - improved the man pages a bit - thanks to Michael Biebl for the patch
2968 - bugfix: not properly initialized data could cause several segfaults if
2969   there were errors in the config file - thanks to varmojfekoj for the patch
2970 ---------------------------------------------------------------------------
2971 Version 2.0.2 STABLE (rgerhards), 2008-02-12
2972 - fixed a bug that could cause invalid string handling via strerror_r
2973   varmojfekoj provided the patch - many thanks!
2974 - added x-info field to rsyslogd startup/shutdown message. Hopefully
2975   points users to right location for further info (many don't even know
2976   they run rsyslog ;))
2977 - bugfix: suspended actions were not always properly resumed
2978   varmojfekoj provided the patch - many thanks!
2979 - bugfix: errno could be changed during mark processing, leading to
2980   invalid error messages when processing inputs. Thank to varmojfekoj for
2981   pointing out this problem.
2982 - bugfix: trailing ":" of tag was lost while parsing legacy syslog messages
2983   without timestamp - thanks to Anders Blomdell for providing a patch!
2984 - bugfix (doc): misspelled config directive, invalid signal info
2985 - applied some doc fixes from Michel Biebl and cleaned up some no longer
2986   needed files suggested by him
2987 - cleaned up stringbuf.c to fix an annoyance reported by Anders Blomdell
2988 - fixed bug that caused invalid treatment of tabs (HT) in rsyslog.conf
2989 ---------------------------------------------------------------------------
2990 Version 2.0.1 STABLE (rgerhards), 2008-01-24
2991 - fixed a bug in integer conversion - but this function was never called,
2992   so it is not really a useful bug fix ;)
2993 - fixed a bug with standard template definitions (not a big deal) - thanks
2994   to varmojfekoj for spotting it
2995 - fixed a bug that caused a potential hang in file and fwd output module
2996   varmojfekoj provided the patch - many thanks!
2997 ---------------------------------------------------------------------------
2998 Version 2.0.0 STABLE (rgerhards), 2008-01-02
2999 - re-release of 1.21.2 as STABLE with no modifications except some
3000   doc updates
3001 ---------------------------------------------------------------------------
3002 Version 1.21.2 (rgerhards), 2007-12-28
3003 - created a gss-api output module. This keeps GSS-API code and
3004   TCP/UDP code separated. It is also important for forward-
3005   compatibility with v3. Please note that this change breaks compatibility
3006   with config files created for 1.21.0 and 1.21.1 - this was considered
3007   acceptable.
3008 - fixed an error in forwarding retry code (could lead to message corruption
3009   but surfaced very seldom)
3010 - increased portability for older platforms (AI_NUMERICSERV moved)
3011 - removed socket leak in omfwd.c
3012 - cross-platform patch for GSS-API compile problem on some platforms
3013   thanks to darix for the patch!
3014 ---------------------------------------------------------------------------
3015 Version 1.21.1 (rgerhards), 2007-12-23
3016 - small doc fix for $IncludeConfig
3017 - fixed a bug in llDestroy()
3018 - bugfix: fixing memory leak when message queue is full and during
3019   parsing. Thanks to varmojfekoj for the patch.
3020 - bugfix: when compiled without network support, unix sockets were
3021   not properply closed
3022 - bugfix: memory leak in cfsysline.c/doGetWord() fixed
3023 ---------------------------------------------------------------------------
3024 Version 1.21.0 (rgerhards), 2007-12-19
3025 - GSS-API support for syslog/TCP connections was added. Thanks to
3026   varmojfekoj for providing the patch with this functionality
3027 - code cleanup
3028 - enhanced $IncludeConfig directive to support wildcard filenames
3029 - changed some multithreading synchronization
3030 ---------------------------------------------------------------------------
3031 Version 1.20.1 (rgerhards), 2007-12-12
3032 - corrected a debug setting that survived release. Caused TCP connections
3033   to be retried unnecessarily often.
3034 - When a hostname ACL was provided and DNS resolution for that name failed,
3035   ACL processing was stopped at that point. Thanks to mildew for the patch.
3036   Fedora Bugzilla: http://bugzilla.redhat.com/show_bug.cgi?id=395911
3037 - fixed a potential race condition, see link for details:
3038   http://rgerhards.blogspot.com/2007/12/rsyslog-race-condition.html
3039   Note that the probability of problems from this bug was very remote
3040 - fixed a memory leak that happend when PostgreSQL date formats were
3041   used
3042 ---------------------------------------------------------------------------
3043 Version 1.20.0 (rgerhards), 2007-12-07
3044 - an output module for postgres databases has been added. Thanks to
3045   sur5r for contributing this code
3046 - unloading dynamic modules has been cleaned up, we now have a
3047   real implementation and not just a dummy "good enough for the time
3048   being".
3049 - enhanced platform independence - thanks to Bartosz Kuzma and Michael
3050   Biebl for their very useful contributions
3051 - some general code cleanup (including warnings on 64 platforms, only)
3052 ---------------------------------------------------------------------------
3053 Version 1.19.12 (rgerhards), 2007-12-03
3054 - cleaned up the build system (thanks to Michael Biebl for the patch)
3055 - fixed a bug where ommysql was still not compiled with -pthread option
3056 ---------------------------------------------------------------------------
3057 Version 1.19.11 (rgerhards), 2007-11-29
3058 - applied -pthread option to build when building for multi-threading mode
3059   hopefully solves an issue with segfaulting
3060 ---------------------------------------------------------------------------
3061 Version 1.19.10 (rgerhards), 2007-10-19
3062 - introdcued the new ":modulename:" syntax for calling module actions
3063   in selector lines; modified ommysql to support it. This is primarily
3064   an aid for further modules and a prequisite to actually allow third
3065   party modules to be created.
3066 - minor fix in slackware startup script, "-r 0" is now "-r0"
3067 - updated rsyslogd doc set man page; now in html format
3068 - undid creation of a separate thread for the main loop -- this did not
3069   turn out to be needed or useful, so reduce complexity once again.
3070 - added doc fixes provided by Michael Biebl - thanks
3071 ---------------------------------------------------------------------------
3072 Version 1.19.9 (rgerhards), 2007-10-12
3073 - now packaging system which again contains all components in a single
3074   tarball
3075 - modularized main() a bit more, resulting in less complex code
3076 - experimentally added an additional thread - will see if that affects
3077   the segfault bug we experience on some platforms. Note that this change
3078   is scheduled to be removed again later.
3079 ---------------------------------------------------------------------------
3080 Version 1.19.8 (rgerhards), 2007-09-27
3081 - improved repeated message processing
3082 - applied patch provided by varmojfekoj to support building ommysql
3083   in its own way (now also resides in a plugin subdirectory);
3084   ommysql is now a separate package
3085 - fixed a bug in cvthname() that lead to message loss if part
3086   of the source hostname would have been dropped
3087 - created some support for distributing ommysql together with the
3088   main rsyslog package. I need to re-think it in the future, but
3089   for the time being the current mode is best. I now simply include
3090   one additional tarball for ommysql inside the main distribution.
3091   I look forward to user feedback on how this should be done best. In the
3092   long term, a separate project should be spawend for ommysql, but I'd
3093   like to do that only after the plugin interface is fully stable (what
3094   it is not yet).
3095 ---------------------------------------------------------------------------
3096 Version 1.19.7 (rgerhards), 2007-09-25
3097 - added code to handle situations where senders send us messages ending with
3098   a NUL character. It is now simply removed. This also caused trailing LF
3099   reduction to fail, when it was followed by such a NUL. This is now also
3100   handled.
3101 - replaced some non-thread-safe function calls by their thread-safe
3102   counterparts
3103 - fixed a minor memory leak that occured when the %APPNAME% property was
3104   used (I think nobody used that in practice)
3105 - fixed a bug that caused signal handlers in cvthname() not to be restored when
3106   a malicious pointer record was detected and processing of the message been
3107   stopped for that reason (this should be really rare and can not be related
3108   to the segfault bug we are hunting).
3109 - fixed a bug in cvthname that lead to passing a wrong parameter - in
3110   practice, this had no impact.
3111 - general code cleanup (e.g. compiler warnings, comments)
3112 ---------------------------------------------------------------------------
3113 Version 1.19.6 (rgerhards), 2007-09-11
3114 - applied patch by varmojfekoj to change signal handling to the new
3115   sigaction API set (replacing the depreciated signal() calls and its
3116   friends.
3117 - fixed a bug that in --enable-debug mode caused an assertion when the
3118   discard action was used
3119 - cleaned up compiler warnings
3120 - applied patch by varmojfekoj to FIX a bug that could cause 
3121   segfaults if empty properties were processed using modifying
3122   options (e.g. space-cc, drop-cc)
3123 - fixed man bug: rsyslogd supports -l option
3124 ---------------------------------------------------------------------------
3125 Version 1.19.5 (rgerhards), 2007-09-07
3126 - changed part of the CStr interface so that better error tracking
3127   is provided and the calling sequence is more intuitive (there were
3128   invalid calls based on a too-weired interface)
3129 - (hopefully) fixed some remaining bugs rooted in wrong use of 
3130   the CStr class. These could lead to program abort.
3131 - applied patch by varmojfekoj two fix two potential segfault situations
3132 - added $ModDir config directive
3133 - modified $ModLoad so that an absolute path may be specified as
3134   module name (e.g. /rsyslog/ommysql.so)
3135 ---------------------------------------------------------------------------
3136 Version 1.19.4 (rgerhards/varmojfekoj), 2007-09-04
3137 - fixed a number of small memory leaks - thanks varmojfekoj for patching
3138 - fixed an issue with CString class that could lead to rsyslog abort
3139   in tplToString() - thanks varmojfekoj for patching
3140 - added a man-version of the config file documenation - thanks to Michel
3141   Samia for providing the man file
3142 - fixed bug: a template like this causes an infinite loop:
3143   $template opts,"%programname:::a,b%"
3144   thanks varmojfekoj for the patch
3145 - fixed bug: case changing options crash freeing the string pointer
3146   because they modify it: $template opts2,"%programname::1:lowercase%"
3147   thanks varmojfekoj for the patch
3148 ---------------------------------------------------------------------------
3149 Version 1.19.3 (mmeckelein/varmojfekoj), 2007-08-31
3150 - small mem leak fixed (after calling parseSelectorAct) - Thx varmojkekoj
3151 - documentation section "Regular File" und "Blocks" updated
3152 - solved an issue with dynamic file generation - Once again many thanks
3153   to varmojfekoj
3154 - the negative selector for program name filter (Blocks) does not work as
3155   expected - Thanks varmojfekoj for patching
3156 - added forwarding information to sysklogd (requires special template)
3157   to config doc
3158 ---------------------------------------------------------------------------
3159 Version 1.19.2 (mmeckelein/varmojfekoj), 2007-08-28
3160 - a specifically formed message caused a segfault - Many thanks varmojfekoj
3161   for providing a patch
3162 - a typo and a weird condition are fixed in msg.c - Thanks again
3163   varmojfekoj 
3164 - on file creation the file was always owned by root:root. This is fixed
3165   now - Thanks ypsa for solving this issue
3166 ---------------------------------------------------------------------------
3167 Version 1.19.1 (mmeckelein), 2007-08-22
3168 - a bug that caused a high load when a TCP/UDP connection was closed is 
3169   fixed now - Thanks mildew for solving this issue
3170 - fixed a bug which caused a segfault on reinit - Thx varmojfekoj for the
3171   patch
3172 - changed the hardcoded module path "/lib/rsyslog" to $(pkglibdir) in order
3173   to avoid trouble e.g. on 64 bit platforms (/lib64) - many thanks Peter
3174   Vrabec and darix, both provided a patch for solving this issue
3175 - enhanced the unloading of modules - thanks again varmojfekoj
3176 - applied a patch from varmojfekoj which fixes various little things in
3177   MySQL output module
3178 ---------------------------------------------------------------------------
3179 Version 1.19.0 (varmojfekoj/rgerhards), 2007-08-16
3180 - integrated patch from varmojfekoj to make the mysql module a loadable one
3181   many thanks for the patch, MUCH appreciated
3182 ---------------------------------------------------------------------------
3183 Version 1.18.2 (rgerhards), 2007-08-13
3184 - fixed a bug in outchannel code that caused templates to be incorrectly
3185   parsed
3186 - fixed a bug in ommysql that caused a wrong ";template" missing message
3187 - added some code for unloading modules; not yet fully complete (and we do
3188   not yet have loadable modules, so this is no problem)
3189 - removed debian subdirectory by request of a debian packager (this is a special
3190   subdir for debian and there is also no point in maintaining it when there
3191   is a debian package available - so I gladly did this) in some cases
3192 - improved overall doc quality (some pages were quite old) and linked to
3193   more of the online resources.
3194 - improved /contrib/delete_mysql script by adding a host option and some
3195   other minor modifications
3196 ---------------------------------------------------------------------------
3197 Version 1.18.1 (rgerhards), 2007-08-08
3198 - applied a patch from varmojfekoj which solved a potential segfault
3199   of rsyslogd on HUP
3200 - applied patch from Michel Samia to fix compilation when the pthreads
3201   feature is disabled
3202 - some code cleanup (moved action object to its own file set)
3203 - add config directive $MainMsgQueueSize, which now allows to configure the
3204   queue size dynamically
3205 - all compile-time settings are now shown in rsyslogd -v, not just the
3206   active ones
3207 - enhanced performance a little bit more
3208 - added config file directive $ActionResumeInterval
3209 - fixed a bug that prevented compilation under debian sid
3210 - added a contrib directory for user-contributed useful things
3211 ---------------------------------------------------------------------------
3212 Version 1.18.0 (rgerhards), 2007-08-03
3213 - rsyslog now supports fallback actions when an action did not work. This
3214   is a great feature e.g. for backup database servers or backup syslog
3215   servers
3216 - modified rklogd to only change the console log level if -c is specified
3217 - added feature to use multiple actions inside a single selector
3218 - implemented $ActionExecOnlyWhenPreviousIsSuspended config directive
3219 - error messages during startup are now spit out to the configured log
3220   destinations
3221 ---------------------------------------------------------------------------
3222 Version 1.17.6 (rgerhards), 2007-08-01
3223 - continued to work on output module modularization - basic stage of
3224   this work is now FINISHED
3225 - fixed bug in OMSRcreate() - always returned SR_RET_OK
3226 - fixed a bug that caused ommysql to always complain about missing
3227   templates
3228 - fixed a mem leak in OMSRdestruct - freeing the object itself was
3229   forgotten - thanks to varmojfekoj for the patch
3230 - fixed a memory leak in syslogd/init() that happend when the config
3231   file could not be read - thanks to varmojfekoj for the patch
3232 - fixed insufficient memory allocation in addAction() and its helpers.
3233   The initial fix and idea was developed by mildew, I fine-tuned
3234   it a bit. Thanks a lot for the fix, I'd probably had pulled out my
3235   hair to find the bug...
3236 - added output of config file line number when a parsing error occured
3237 - fixed bug in objomsr.c that caused program to abort in debug mode with
3238   an invalid assertion (in some cases)
3239 - fixed a typo that caused the default template for MySQL to be wrong.
3240   thanks to mildew for catching this.
3241 - added configuration file command $DebugPrintModuleList and
3242   $DebugPrintCfSysLineHandlerList
3243 - fixed an invalid value for the MARK timer - unfortunately, there was
3244   a testing aid left in place. This resulted in quite frequent MARK messages
3245 - added $IncludeConfig config directive
3246 - applied a patch from mildew to prevent rsyslogd from freezing under heavy
3247   load. This could happen when the queue was full. Now, we drop messages
3248   but rsyslogd remains active.
3249 ---------------------------------------------------------------------------
3250 Version 1.17.5 (rgerhards), 2007-07-30
3251 - continued to work on output module modularization
3252 - fixed a missing file bug - thanks to Andrea Montanari for reporting
3253   this problem
3254 - fixed a problem with shutting down the worker thread and freeing the
3255   selector_t list - this caused messages to be lost, because the
3256   message queue was not properly drained before the selectors got
3257   destroyed.
3258 ---------------------------------------------------------------------------
3259 Version 1.17.4 (rgerhards), 2007-07-27
3260 - continued to work on output module modularization
3261 - fixed a situation where rsyslogd could create zombie processes
3262   thanks to mildew for the patch
3263 - applied patch from Michel Samia to fix compilation when NOT
3264   compiled for pthreads
3265 ---------------------------------------------------------------------------
3266 Version 1.17.3 (rgerhards), 2007-07-25
3267 - continued working on output module modularization
3268 - fixed a bug that caused rsyslogd to segfault on exit (and
3269   probably also on HUP), when there was an unsent message in a selector
3270   that required forwarding and the dns lookup failed for that selector
3271   (yes, it was pretty unlikely to happen;))
3272   thanks to varmojfekoj <varmojfekoj@gmail.com> for the patch
3273 - fixed a memory leak in config file parsing and die()
3274   thanks to varmojfekoj <varmojfekoj@gmail.com> for the patch
3275 - rsyslogd now checks on startup if it is capable to performa any work
3276   at all. If it cant, it complains and terminates
3277   thanks to Michel Samia for providing the patch!
3278 - fixed a small memory leak when HUPing syslogd. The allowed sender
3279   list now gets freed. thanks to mildew for the patch.
3280 - changed the way error messages in early startup are logged. They
3281   now do no longer use the syslogd code directly but are rather
3282   send to stderr.
3283 ---------------------------------------------------------------------------
3284 Version 1.17.2 (rgerhards), 2007-07-23
3285 - made the port part of the -r option optional. Needed for backward
3286   compatibility with sysklogd
3287 - replaced system() calls with something more reasonable. Please note that
3288   this might break compatibility with some existing configuration files.
3289   We accept this in favour of the gained security.
3290 - removed a memory leak that could occur if timegenerated was used in
3291   RFC 3164 format in templates
3292 - did some preparation in msg.c for advanced multithreading - placed the
3293   hooks, but not yet any active code
3294 - worked further on modularization
3295 - added $ModLoad MySQL (dummy) config directive
3296 - added DropTrailingLFOnReception config directive
3297 ---------------------------------------------------------------------------
3298 Version 1.17.1 (rgerhards), 2007-07-20
3299 - fixed a bug that caused make install to install rsyslogd and rklogd under
3300   the wrong names
3301 - fixed bug that caused $AllowedSenders to handle IPv6 scopes incorrectly;
3302   also fixed but that could grabble $AllowedSender wildcards. Thanks to
3303   mildew@gmail.com for the patch
3304 - minor code cleanup - thanks to Peter Vrabec for the patch
3305 - fixed minimal memory leak on HUP (caused by templates)
3306   thanks to varmojfekoj <varmojfekoj@gmail.com> for the patch
3307 - fixed another memory leak on HUPing and on exiting rsyslogd
3308   again thanks to varmojfekoj <varmojfekoj@gmail.com> for the patch
3309 - code cleanup (removed compiler warnings)
3310 - fixed portability bug in configure.ac - thanks to Bartosz Kuźma for patch
3311 - moved msg object into its own file set
3312 - added the capability to continue trying to write log files when the
3313   file system is full. Functionality based on patch by Martin Schulze
3314   to sysklogd package.
3315 ---------------------------------------------------------------------------
3316 Version 1.17.0 (RGer), 2007-07-17
3317 - added $RepeatedLineReduction config parameter
3318 - added $EscapeControlCharactersOnReceive config parameter
3319 - added $ControlCharacterEscapePrefix config parameter
3320 - added $DirCreateMode config parameter
3321 - added $CreateDirs config parameter
3322 - added $DebugPrintTemplateList config parameter
3323 - added $ResetConfigVariables config parameter
3324 - added $FileOwner config parameter
3325 - added $FileGroup config parameter
3326 - added $DirOwner config parameter
3327 - added $DirGroup config parameter
3328 - added $FailOnChownFailure config parameter
3329 - added regular expression support to the filter engine
3330   thanks to Michel Samia for providing the patch!
3331 - enhanced $AllowedSender functionality. Credits to mildew@gmail.com for
3332   the patch doing that
3333   - added IPv6 support
3334   - allowed DNS hostnames
3335   - allowed DNS wildcard names
3336 - added new option $DropMsgsWithMaliciousDnsPTRRecords
3337 - added autoconf so that rfc3195d, rsyslogd and klogd are stored to /sbin
3338 - added capability to auto-create directories with dynaFiles
3339 ---------------------------------------------------------------------------
3340 Version 1.16.0 (RGer/Peter Vrabec), 2007-07-13 - The Friday, 13th Release ;)
3341 - build system switched to autotools
3342 - removed SYSV preprocessor macro use, replaced with autotools equivalents
3343 - fixed a bug that caused rsyslogd to segfault when TCP listening was
3344   disabled and it terminated
3345 - added new properties "syslogfacility-text" and "syslogseverity-text"
3346   thanks to varmojfekoj <varmojfekoj@gmail.com> for the patch
3347 - added the -x option to disable hostname dns reslution
3348   thanks to varmojfekoj <varmojfekoj@gmail.com> for the patch
3349 - begun to better modularize syslogd.c - this is an ongoing project; moved
3350   type definitions to a separate file
3351 - removed some now-unused fields from struct filed
3352 - move file size limit fields in struct field to the "right spot" (the file
3353   writing part of the union - f_un.f_file)
3354 - subdirectories linux and solaris are no longer part of the distribution
3355   package. This is not because we cease support for them, but there are no
3356   longer any files in them after the move to autotools
3357 ---------------------------------------------------------------------------
3358 Version 1.15.1 (RGer), 2007-07-10
3359 - fixed a bug that caused a dynaFile selector to stall when there was
3360   an open error with one file 
3361 - improved template processing for dynaFiles; templates are now only
3362   looked up during initialization - speeds up processing
3363 - optimized memory layout in struct filed when compiled with MySQL
3364   support
3365 - fixed a bug that caused compilation without SYSLOG_INET to fail
3366 - re-enabled the "last message repeated n times" feature. This
3367   feature was not taken care of while rsyslogd evolved from sysklogd
3368   and it was more or less defunct. Now it is fully functional again.
3369 - added system properties: $NOW, $YEAR, $MONTH, $DAY, $HOUR, $MINUTE
3370 - fixed a bug in iovAsString() that caused a memory leak under stress
3371   conditions (most probably memory shortage). This was unlikely to
3372   ever happen, but it doesn't hurt doing it right
3373 - cosmetic: defined type "uchar", change all unsigned chars to uchar
3374 ---------------------------------------------------------------------------
3375 Version 1.15.0 (RGer), 2007-07-05
3376 - added ability to dynamically generate file names based on templates
3377   and thus properties. This was a much-requested feature. It makes
3378   life easy when it e.g. comes to splitting files based on the sender
3379   address.
3380 - added $umask and $FileCreateMode config file directives
3381 - applied a patch from Bartosz Kuzma to compile cleanly under NetBSD
3382 - checks for extra (unexpected) characters in system config file lines
3383   have been added
3384 - added IPv6 documentation - was accidently missing from CVS
3385 - begun to change char to unsigned char
3386 ---------------------------------------------------------------------------
3387 Version 1.14.2 (RGer), 2007-07-03
3388 ** this release fixes all known nits with IPv6 **
3389 - restored capability to do /etc/service lookup for "syslog"
3390   service when -r 0 was given
3391 - documented IPv6 handling of syslog messages
3392 - integrate patch from Bartosz Kuźma to make rsyslog compile under
3393   Solaris again (the patch replaced a strndup() call, which is not
3394   available under Solaris
3395 - improved debug logging when waiting on select
3396 - updated rsyslogd man page with new options (-46A)
3397 ---------------------------------------------------------------------------
3398 Version 1.14.1 (RGer/Peter Vrabec), 2007-06-29
3399 - added Peter Vrabec's patch for IPv6 TCP
3400 - prefixed all messages send to stderr in rsyslogd with "rsyslogd: "
3401 ---------------------------------------------------------------------------
3402 Version 1.14.0 (RGer/Peter Vrabec), 2007-06-28
3403 - Peter Vrabec provided IPv6 for rsyslog, so we are now IPv6 enabled
3404   IPv6 Support is currently for UDP only, TCP is to come soon.
3405   AllowedSender configuration does not yet work for IPv6.
3406 - fixed code in iovCreate() that broke C's strict aliasing rules 
3407 - fixed some char/unsigned char differences that forced the compiler
3408   to spit out warning messages
3409 - updated the Red Hat init script to fix a known issue (thanks to
3410   Peter Vrabec)
3411 ---------------------------------------------------------------------------
3412 Version 1.13.5 (RGer), 2007-06-22
3413 - made the TCP session limit configurable via command line switch
3414   now -t <port>,<max sessions>
3415 - added man page for rklogd(8) (basically a copy from klogd, but now
3416   there is one...)
3417 - fixed a bug that caused internal messages (e.g. rsyslogd startup) to
3418   appear without a tag.
3419 - removed a minor memory leak that occurred when TAG processing requalified
3420   a HOSTNAME to be a TAG (and a TAG already was set).
3421 - removed potential small memory leaks in MsgSet***() functions. There
3422   would be a leak if a property was re-set, something that happened
3423   extremely seldom.
3424 ---------------------------------------------------------------------------
3425 Version 1.13.4 (RGer), 2007-06-18
3426 - added a new property "PRI-text", which holds the PRI field in
3427   textual form (e.g. "syslog.info")
3428 - added alias "syslogseverity" for "syslogpriority", which is a
3429   misleading property name that needs to stay for historical
3430   reasons (and backward-compatility)
3431 - added doc on how to record PRI value in log file
3432 - enhanced signal handling in klogd, including removal of an unsafe
3433   call to the logging system during signal handling
3434 ---------------------------------------------------------------------------
3435 Version 1.13.3 (RGer), 2007-06-15
3436 - create a version of syslog.c from scratch. This is now
3437   - highly optimized for rsyslog
3438   - removes an incompatible license problem as the original
3439     version had a BSD license with advertising clause
3440   - fixed in the regard that rklogd will continue to work when
3441     rsysogd has been restarted (the original version, as well
3442     as sysklogd, will remain silent then)
3443   - solved an issue with an extra NUL char at message end that the
3444     original version had
3445 - applied some changes to klogd to care for the new interface
3446 - fixed a bug in syslogd.c which prevented compiling under debian
3447 ---------------------------------------------------------------------------
3448 Version 1.13.2 (RGer), 2007-06-13
3449 - lib order in makefile patched to facilitate static linking - thanks
3450   to Bennett Todd for providing the patch
3451 - Integrated a patch from Peter Vrabec (pvrabec@redheat.com):
3452   - added klogd under the name of rklogd (remove dependency on
3453     original sysklogd package
3454   - createDB.sql now in UTF
3455   - added additional config files for use on Red Hat
3456 ---------------------------------------------------------------------------
3457 Version 1.13.1 (RGer), 2007-02-05
3458 - changed the listen backlog limit to a more reasonable value based on
3459   the maximum number of TCP connections configurd (10% + 5) - thanks to Guy
3460   Standen for the hint (actually, the limit was 5 and that was a 
3461   left-over from early testing).
3462 - fixed a bug in makefile which caused DB-support to be disabled when
3463   NETZIP support was enabled
3464 - added the -e option to allow transmission of every message to remote
3465   hosts (effectively turns off duplicate message suppression)
3466 - (somewhat) improved memory consumption when compiled with MySQL support
3467 - looks like we fixed an incompatibility with MySQL 5.x and above software
3468   At least in one case, the remote server name was destroyed, leading to 
3469   a connection failure. The new, improved code does not have this issue and
3470   so we see this as solved (the new code is generally somewhat better, so
3471   there is a good chance we fixed this incompatibility).
3472 ---------------------------------------------------------------------------
3473 Version 1.13.0 (RGer), 2006-12-19
3474 - added '$' as ToPos proptery replacer specifier - means "up to the
3475   end of the string"
3476 - property replacer option "escape-cc", "drop-cc" and "space-cc"  added
3477 - changed the handling of \0 characters inside syslog messages. We now
3478   consistently escape them to "#000". This is somewhat recommended in
3479   the draft-ietf-syslog-protocol-19 draft. While the real recomendation
3480   is to not escape any characters at all, we can not do this without
3481   considerable modification of the code. So we escape it to "#000", which
3482   is consistent with a sample found in the Internet-draft.
3483 - removed message glue logic (see printchopped() comment for details)
3484   Also caused removal of parts table and thus some improvements in
3485   memory usage.
3486 - changed the default MAXLINE to 2048 to take care of recent syslog
3487   standardization efforts (can easily be changed in syslogd.c)
3488 - added support for byte-counted TCP syslog messages (much like
3489   syslog-transport-tls-05 Internet Draft). This was necessary to
3490   support compression over TCP.
3491 - added support for receiving compressed syslog messages
3492 - added support for sending compressed syslog messages
3493 - fixed a bug where the last message in a syslog/tcp stream was
3494   lost if it was not properly terminated by a LF character
3495 ---------------------------------------------------------------------------
3496 Version 1.12.3 (RGer), 2006-10-04
3497 - implemented some changes to support Solaris (but support is not
3498   yet complete)
3499 - commented out (via #if 0) some methods that are currently not being use
3500   but should be kept for further us
3501 - added (interim) -u 1 option to turn off hostname and tag parsing
3502 - done some modifications to better support Fedora
3503 - made the field delimiter inside property replace configurable via
3504   template
3505 - fixed a bug in property replacer: if fields were used, the delimitor
3506   became part of the field. Up until now, this was barely noticable as 
3507   the delimiter as TAB only and thus invisible to a human. With other
3508   delimiters available now, it quickly showed up. This bug fix might cause
3509   some grief to existing installations if they used the extra TAB for
3510   whatever reasons - sorry folks... Anyhow, a solution is easy: just add
3511   a TAB character contstant into your template. Thus, there has no attempt
3512   been made to do this in a backwards-compatible way.
3513 ---------------------------------------------------------------------------
3514 Version 1.12.2 (RGer), 2006-02-15
3515 - fixed a bug in the RFC 3339 date formatter. An extra space was added
3516   after the actual timestamp
3517 - added support for providing high-precision RFC3339 timestamps for
3518   (rsyslogd-)internally-generated messages
3519 - very (!) experimental support for syslog-protocol internet draft
3520   added (the draft is experimental, the code is solid ;))
3521 - added support for field-extracting in the property replacer
3522 - enhanced the legacy-syslog parser so that it can interpret messages
3523   that do not contain a TIMESTAMP
3524 - fixed a bug that caused the default socket (usually /dev/log) to be
3525   opened even when -o command line option was given
3526 - fixed a bug in the Debian sample startup script - it caused rsyslogd
3527   to listen to remote requests, which it shouldn't by default
3528 ---------------------------------------------------------------------------
3529 Version 1.12.1 (RGer), 2005-11-23
3530 - made multithreading work with BSD. Some signal-handling needed to be
3531   restructured. Also, there might be a slight delay of up to 10 seconds
3532   when huping and terminating rsyslogd under BSD
3533 - fixed a bug where a NULL-pointer was passed to printf() in logmsg().
3534 - fixed a bug during "make install" where rc3195d was not installed
3535   Thanks to Bennett Todd for spotting this.
3536 - fixed a bug where rsyslogd dumped core when no TAG was found in the
3537   received message
3538 - enhanced message parser so that it can deal with missing hostnames
3539   in many cases (may not be totally fail-safe)
3540 - fixed a bug where internally-generated messages did not have the correct
3541   TAG
3542 ---------------------------------------------------------------------------
3543 Version 1.12.0 (RGer), 2005-10-26
3544 - moved to a multi-threaded design. single-threading is still optionally
3545   available. Multi-threading is experimental!
3546 - fixed a potential race condition. In the original code, marking was done
3547   by an alarm handler, which could lead to all sorts of bad things. This
3548   has been changed now. See comments in syslogd.c/domark() for details.
3549 - improved debug output for property-based filters
3550 - not a code change, but: I have checked all exit()s to make sure that
3551   none occurs once rsyslogd has started up. Even in unusual conditions
3552   (like low-memory conditions) rsyslogd somehow remains active. Of course,
3553   it might loose a message or two, but at least it does not abort and it
3554   can also recover when the condition no longer persists.
3555 - fixed a bug that could cause loss of the last message received
3556   immediately before rsyslogd was terminated.
3557 - added comments on thread-safety of global variables in syslogd.c
3558 - fixed a small bug: spurios printf() when TCP syslog was used
3559 - fixed a bug that causes rsyslogd to dump core on termination when one
3560   of the selector lines did not receive a message during the run (very
3561   unlikely)
3562 - fixed an one-too-low memory allocation in the TCP sender. Could result
3563   in rsyslogd dumping core.
3564 - fixed a bug with regular expression support (thanks to Andres Riancho)
3565 - a little bit of code restructuring (especially main(), which was
3566   horribly large)
3567 ---------------------------------------------------------------------------
3568 Version 1.11.1 (RGer), 2005-10-19
3569 - support for BSD-style program name and host blocks
3570 - added a new property "programname" that can be used in templates
3571 - added ability to specify listen port for rfc3195d
3572 - fixed a bug that rendered the "startswith" comparison operation
3573   unusable.
3574 - changed more functions to "static" storage class to help compiler
3575   optimize (should have been static in the first place...)
3576 - fixed a potential memory leak in the string buffer class destructor.
3577   As the destructur was previously never called, the leak did not actually
3578   appear.
3579 - some internal restructuring in anticipation/preparation of minimal
3580   multi-threading support
3581 - rsyslogd still shares some code with the sysklogd project. Some patches
3582   for this shared code have been brought over from the sysklogd CVS.
3583 ---------------------------------------------------------------------------
3584 Version 1.11.0 (RGer), 2005-10-12
3585 - support for receiving messages via RFC 3195; added rfc3195d for that
3586   purpose
3587 - added an additional guard to prevent rsyslogd from aborting when the
3588   2gb file size limit is hit. While a user can configure rsyslogd to
3589   handle such situations, it would abort if that was not done AND large
3590   file support was not enabled (ok, this is hopefully an unlikely scenario)
3591 - fixed a bug that caused additional Unix domain sockets to be incorrectly
3592   processed - could lead to message loss in extreme cases
3593 ---------------------------------------------------------------------------
3594 Version 1.10.2 (RGer), 2005-09-27
3595 - added comparison operations in property-based filters:
3596   * isequal
3597   * startswith
3598 - added ability to negate all property-based filter comparison operations
3599   by adding a !-sign right in front of the operation name
3600 - added the ability to specify remote senders for UDP and TCP
3601   received messages. Allows to block all but well-known hosts
3602 - changed the $-config line directives to be case-INsensitive
3603 - new command line option -w added: "do not display warnings if messages
3604   from disallowed senders are received"
3605 - fixed a bug that caused rsyslogd to dump core when the compare value
3606   was not quoted in property-based filters
3607 - fixed a bug in the new CStr compare function which lead to invalid
3608   results (fortunately, this function was not yet used widely)
3609 - added better support for "debugging" rsyslog.conf property filters
3610   (only if -d switch is given)
3611 - changed some function definitions to static, which eventually enables
3612   some compiler optimizations
3613 - fixed a bug in MySQL code; when a SQL error occured, rsyslogd could
3614   run in a tight loop. This was due to invalid sequence of error reporting
3615   and is now fixed.
3616 ---------------------------------------------------------------------------
3617 Version 1.10.1 (RGer), 2005-09-23
3618 - added the ability to execute a shell script as an action.
3619   Thanks to Bjoern Kalkbrenner for providing the code!
3620 - fixed a bug in the MySQL code; due to the bug the automatic one-time
3621   retry after an error did not happen - this lead to error message in
3622   cases where none should be seen (e.g. after a MySQL restart)
3623 - fixed a security issue with SQL-escaping in conjunction with
3624   non-(SQL-)standard MySQL features.
3625 ---------------------------------------------------------------------------
3626 Version 1.10.0 (RGer), 2005-09-20
3627   REMINDER: 1.10 is the first unstable version if the 1.x series!
3628 - added the capability to filter on any property in selector lines
3629   (not just facility and priority)
3630 - changed stringbuf into a new counted string class
3631 - added support for a "discard" action. If a selector line with
3632   discard (~ character) is found, no selector lines *after* that
3633   line will be processed.
3634 - thanks to Andres Riancho, regular expression support has been
3635   added to the template engine
3636 - added the FROMHOST property in the template processor, which could
3637   previously not be obtained. Thanks to Cristian Testa for pointing
3638   this out and even providing a fix.
3639 - added display of compile-time options to -v output
3640 - performance improvement for production build - made some checks
3641   to happen only during debug mode
3642 - fixed a problem with compiling on SUSE and - while doing so - removed
3643   the socket call to set SO_BSDCOMPAT in cases where it is obsolete.
3644 ---------------------------------------------------------------------------
3645 Version 1.0.4 (RGer), 2006-02-01
3646 - a small but important fix: the tcp receiver had two forgotten printf's
3647   in it that caused a lot of unnecessary output to stdout. This was
3648   important enough to justify a new release
3649 ---------------------------------------------------------------------------
3650 Version 1.0.3 (RGer), 2005-11-14
3651 - added an additional guard to prevent rsyslogd from aborting when the
3652   2gb file size limit is hit. While a user can configure rsyslogd to
3653   handle such situations, it would abort if that was not done AND large
3654   file support was not enabled (ok, this is hopefully an unlikely scenario)
3655 - fixed a bug that caused additional Unix domain sockets to be incorrectly
3656   processed - could lead to message loss in extreme cases
3657 - applied some patches available from the sysklogd project to code
3658   shared from there
3659 - fixed a bug that causes rsyslogd to dump core on termination when one
3660   of the selector lines did not receive a message during the run (very
3661   unlikely)
3662 - fixed an one-too-low memory allocation in the TCP sender. Could result
3663   in rsyslogd dumping core.
3664 - fixed a bug in the TCP sender that caused the retry logic to fail
3665   after an error or receiver overrun
3666 - fixed a bug in init() that could lead to dumping core
3667 - fixed a bug that could lead to dumping core when no HOSTNAME or no TAG
3668   was present in the syslog message
3669 ---------------------------------------------------------------------------
3670 Version 1.0.2 (RGer), 2005-10-05
3671 - fixed an issue with MySQL error reporting. When an error occured,
3672   the MySQL driver went into an endless loop (at least in most cases).
3673 ---------------------------------------------------------------------------
3674 Version 1.0.1 (RGer), 2005-09-23
3675 - fixed a security issue with SQL-escaping in conjunction with
3676   non-(SQL-)standard MySQL features.
3677 ---------------------------------------------------------------------------
3678 Version 1.0.0 (RGer), 2005-09-12
3679 - changed install doc to cover daily cron scripts - a trouble source
3680 - added rc script for slackware (provided by Chris Elvidge - thanks!) 
3681 - fixed a really minor bug in usage() - the -r option was still
3682   reported as without the port parameter
3683 ---------------------------------------------------------------------------
3684 Version 0.9.8 (RGer), 2005-09-05
3685 - made startup and shutdown message more consistent and included the
3686   pid, so that they can be easier correlated. Used syslog-protocol
3687   structured data format for this purpose.
3688 - improved config info in startup message, now tells not only
3689   if it is listening remote on udp, but also for tcp. Also includes
3690   the port numbers. The previous startup message was misleading, because
3691   it did not say "remote reception" if rsyslogd was only listening via
3692   tcp (but not via udp).
3693 - added a "how can you help" document to the doc set
3694 ---------------------------------------------------------------------------
3695 Version 0.9.7 (RGer), 2005-08-15
3696 - some of the previous doc files (like INSTALL) did not properly
3697   reflect the changes to the build process and the new doc. Fixed
3698   that.
3699 - changed syslogd.c so that when compiled without database support,
3700   an error message is displayed when a database action is detected
3701   in the config file (previously this was used as an user rule ;))
3702 - fixed a bug in the os-specific Makefiles which caused MySQL
3703   support to not be compiled, even if selected
3704 ---------------------------------------------------------------------------
3705 Version 0.9.6 (RGer), 2005-08-09
3706 - greatly enhanced documentation. Now available in html format in
3707   the "doc" folder and FreeBSD. Finally includes an install howto.
3708 - improved MySQL error messages a little - they now show up as log
3709   messages, too (formerly only in debug mode)
3710 - added the ability to specify the listen port for udp syslog.
3711   WARNING: This introduces an incompatibility. Formerly, udp
3712   syslog was enabled by the -r command line option. Now, it is
3713   "-r [port]", which is consistent with the tcp listener. However,
3714   just -r will now return an error message.
3715 - added sample startup scripts for Debian and FreeBSD
3716 - added support for easy feature selection in the makefile. Un-
3717   fortunately, this also means I needed to spilt the make file
3718   for different OS and distros. There are some really bad syntax
3719   differences between FreeBSD and Linux make.
3720 ---------------------------------------------------------------------------
3721 Version 0.9.5 (RGer), 2005-08-01
3722 - the "semicolon bug" was actually not (fully) solved in 0.9.4. One
3723   part of the bug was solved, but another still existed. This one
3724   is fixed now, too.
3725 - the "semicolon bug" actually turned out to be a more generic bug.
3726   It appeared whenever an invalid template name was given. With some
3727   selector actions, rsyslogd dumped core, with other it "just" had
3728   a small ressource leak with others all worked well. These anomalies
3729   are now fixed. Note that they only appeared during system initaliziation
3730   once the system was running, nothing bad happened.
3731 - improved error reporting for template errors on startup. They are now
3732   shown on the console and the start-up tty. Formerly, they were only
3733   visible in debug mode.
3734 - support for multiple instances of rsyslogd on a single machine added
3735 - added new option "-o" --> omit local unix domain socket. This option
3736   enables rsyslogd NOT to listen to the local socket. This is most
3737   helpful when multiple instances of rsyslogd (or rsyslogd and another
3738   syslogd) shall run on a single system.
3739 - added new option "-i <pidfile>" which allows to specify the pidfile.
3740   This is needed when multiple instances of rsyslogd are to be run.
3741 - the new project h