Hello.
I have a question about the combination of the "foreground = yes"
option combined with the "output = FILE" option.
The man page says this:
foreground = yes | no (Unix only)
foreground mode
Stay in foreground (don’t fork) and log to stderr instead of via
syslog (unless output is specified).
This implies that if you set both "foreground = yes" and "output =
FILE", the log messages will not be sent to stderr and will instead be
sent to the log file only. We'd like this behavior--it makes it
easier for our scripts to distinguish startup errors parsing the
config file (which are sent to stderr, since the log file isn't
configured yet) vs. normal operation after the config file is parsed
and the log file is established.
However, it appears that if you specify "foreground = yes" and "output
= FILE", log messages will go to *both* stderr and the output file.
I guess I'm asking: is the documentation in conflict with the
behavior, and if so, which is correct?
It's possible I'm just misreading the man page. But in any case, here
is a simple patch which changes the behavior to match our reading of
the man page. It is against stunnel-5.22 but I believe it should be
applicable to later versions as well.
Thank you,
Michael
diff -ru stunnel-5.22.orig/src/log.c stunnel-5.22-foreground-outfile/src/log.c
--- stunnel-5.22.orig/src/log.c 2015-06-16 06:16:35.000000000 -0700
+++ stunnel-5.22-foreground-outfile/src/log.c 2015-10-14
11:54:58.998254974 -0700
@@ -243,7 +243,8 @@
level<=opt->log_level
#else
(level<=opt->log_level &&
- global_options.option.foreground)
+ global_options.option.foreground &&
+ !outfile)
#endif
)
ui_new_log(line);