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