From 2b487ceb72281af8f125babdd8128101f93d792e Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Wed, 25 Jul 2007 07:07:16 +0000 Subject: fixed a bug that caused rsyslogd to segfault on exit (and probably also on HUP), when there was an unsent message in a selector that required forwarding and the dns lookup failed for that selector (yes, it was pretty unlikely to happen;)) thanks to varmojfekoj for the patch --- ChangeLog | 8 ++++++++ syslogd.c | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3fd61b3d..70037930 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ --------------------------------------------------------------------------- Version 1.17.3 (rgerhards), 2007-07-2? - continued working on modularization +- fixed a bug that caused rsyslogd to segfault on exit (and + probably also on HUP), when there was an unsent message in a selector + that required forwarding and the dns lookup failed for that selector + (yes, it was pretty unlikely to happen;)) + thanks to varmojfekoj for the patch - fixed a memory leak in config file parsing and die() thanks to varmojfekoj for the patch - rsyslogd now checks on startup if it is capable to performa any work @@ -8,6 +13,9 @@ Version 1.17.3 (rgerhards), 2007-07-2? thanks to Michel Samia for providing the patch! - fixed a small memory leak when HUPing syslogd. The allowed sender list now gets freed. thanks mildew to for the patch. +- changed the way error messages in early startup are logged. They + now do no longer use the syslogd code directly but are rather + send to stderr, the console and a user-configurable file. --------------------------------------------------------------------------- Version 1.17.2 (rgerhards), 2007-07-23 - made the port part of the -r option optional. Needed for backward diff --git a/syslogd.c b/syslogd.c index de588412..45423b36 100644 --- a/syslogd.c +++ b/syslogd.c @@ -4100,7 +4100,11 @@ static void freeSelectors(void) f = Files; while (f != NULL) { /* flush any pending output */ - if (f->f_prevcount) { + /* TODO: the output module must handle this internally in the + * future - implement it when moving f_type out of selector_t + * rgerhards, 2007-07-24 + */ + if(f->f_type != F_FORW_UNKN && f->f_prevcount) { fprintlog(f); } -- cgit v1.2.3