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