also prepared test case for TLS testing, but not activated it
inside the build itself.
A note on TLS testing: the current testsuite (in git!) already contains
TLS test cases. However, getting these test cases correct is not simple.
That's not a problem with the code itself, but rater a problem with
synchronization in the test environment. So I have deciced to keep the
TLS tests in, but not yet actually utilize them. This is most probably
left as an excercise for future (devel) releases.
in which debug output can be generated only after the process has started,
but not right from the beginning. This is assumed to be useful for
hard-to-find bugs. Also improved the doc on the debug system.
...for the main queue if an active DA queue existed. This had no relevance
to real deployments (assuming they are not running the debug/diagnostic
module...), but sometimes caused grief and false alerts in the
testbench.
This resulted in wrong values. The most prominent victim was the
directory creation mode, which was set to zero in some cases. For
details, see related blog post:
http://blog.gerhards.net/2009/10/another-note-on-hard-to-find-bugs.html
This replaces the improper bugfix from two commits ago with a proper one.
one-time write to the mode, then all works. However, if no such write
is done, the variable always remains zero. I have used the memory
debugger as well as shuffled the code around and used guard variables
nothing changed. The problem always moved with the changes I did. So
I now consider the one-time write a usable work-around, because it
definitely fixes the issue even though it does not explain why it
happens.
Conflicts:
configure.ac
doc/manual.html
runtime/datetime.h
runtime/parser.c
runtime/rsyslog.h
tools/syslogd.c
v4-stable had a bug with RFC5424-formatted structured data, which showed
was detected by the enhanced automatted testbench of v4-beta.
Until now, they were forwarded to processing, but this makes no sense
Also, it looks like the system seems to provide a zero return code
on a UDP recvfrom() from time to time for some internal reasons. These
"receives" are now silently ignored.
we needed to release ALL resources (including file handles!) only
after the the async writer thread has terminated (else it may access
them). In this case, we had a file handle leak, because the handle was
sometimes only opened in the async writer, but the close was attempted
before the writer even started (in some cases).
...after we seem to have identified the root cause of the segfault.
I leave them commented out so that we can re-activate it if need
arises (aka "get some practice drill first").
Most severely affected omfile. The problem was that some buffers were
freed before the asynchronous writer thread was shut down. So the
writer thread accessed invalid data, which may even already be
overwritten. Symptoms (with omfile) were segfaults, grabled data
and files with random names placed around the file system (most
prominently into the root directory). Special thanks to Aaron for
helping to track this down.
Problems could lead to abort and/or memory leak. The module is now hardened in a very
conservative way, which is sub-optimal from a performance point of view. This should
be improved if it has proven reliable in practice.