diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | tools/syslogd.c | 14 |
2 files changed, 19 insertions, 1 deletions
@@ -87,6 +87,12 @@ Version 4.3.0 [DEVEL] (rgerhards), 2009-04-17 execution. The most probable case for such a case would be invalid sql inside the template, and this is now much easier to diagnose. --------------------------------------------------------------------------- +Version 4.2.1 [v4-stable] (rgerhards), 2009-0?-?? +- bugfix: stderr/stdout were not closed to be able to emit error messages, + but this caused ssh sessions to hang. Now we close them after the + initial initialization. See forum thread: + http://kb.monitorware.com/controlling-terminal-issues-t9875.html +--------------------------------------------------------------------------- Version 4.2.0 [v4-stable] (rgerhards), 2009-06-23 - bugfix: light and full delay watermarks had invalid values, badly affecting performance for delayable inputs diff --git a/tools/syslogd.c b/tools/syslogd.c index 10d07c95..3204d94e 100644 --- a/tools/syslogd.c +++ b/tools/syslogd.c @@ -2805,7 +2805,6 @@ static rsRetVal mainThread() glbl.SetHUPisRestart(0); /* we can not do restart-type HUPs with dropped privs */ } - /* finally let the inputs run... */ runInputModules(); @@ -2815,6 +2814,19 @@ static rsRetVal mainThread() */ DBGPRINTF("initialization completed, transitioning to regular run mode\n"); + /* close stderr and stdout if they are kept open during a fork. Note that this + * may introduce subtle security issues: if we are in a jail, one may break out of + * it via these descriptors. But if I close them earlier, error messages will (once + * again) not be emitted to the user that starts the daemon. As root jail support + * is still in its infancy (and not really done), we currently accept this issue. + * rgerhards, 2009-06-29 + */ + if(!(Debug || NoFork)) { + close(1); + close(2); + bErrMsgToStderr = 0; + } + mainloop(); finalize_it: |