From: Timo Sirainen Date: Fri, 29 Aug 2008 06:58:54 +0000 (+0300) Subject: deliver: If we're dying because we can't write to log file, write error to stderr. X-Git-Tag: 1.2.alpha1~43 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=48c998dbac664b2ae9990fd0e9dfee34c8b49e70;p=thirdparty%2Fdovecot%2Fcore.git deliver: If we're dying because we can't write to log file, write error to stderr. --HG-- branch : HEAD --- diff --git a/src/deliver/deliver.c b/src/deliver/deliver.c index d84aefb1c9..3d83a08b69 100644 --- a/src/deliver/deliver.c +++ b/src/deliver/deliver.c @@ -639,17 +639,27 @@ static struct istream *create_raw_stream(int fd, time_t *mtime_r) static void failure_exit_callback(int *status) { - /* we want all our exit codes to be sysexits.h compatible */ + /* we want all our exit codes to be sysexits.h compatible. + if we failed because of a logging related error, we most likely + aren't writing to stderr, so try writing there to give some kind of + a clue what's wrong. FATAL_LOGOPEN failure already wrote to + stderr, so don't duplicate it. */ switch (*status) { - case FATAL_LOGOPEN: case FATAL_LOGWRITE: + fputs("Failed to write to log file", stderr); + break; case FATAL_LOGERROR: + fputs("Internal logging error", stderr); + break; + case FATAL_LOGOPEN: case FATAL_OUTOFMEM: case FATAL_EXEC: case FATAL_DEFAULT: - *status = EX_TEMPFAIL; break; + default: + return; } + *status = EX_TEMPFAIL; } static void open_logfile(const char *username)