# HG changeset patch # User Timo Sirainen # Date 1219993134 -10800 # Node ID 6665a641780c0eacab23ee8235ba371cf7d0a8e8 # Parent 079ed76a987d19a50f7f7548b0154bacd663d7b1 deliver: If we're dying because we can't write to log file, write error to stderr. diff -r 079ed76a987d -r 6665a641780c src/deliver/deliver.c --- a/src/deliver/deliver.c Fri Aug 29 09:43:18 2008 +0300 +++ b/src/deliver/deliver.c Fri Aug 29 09:58:54 2008 +0300 @@ -639,17 +639,27 @@ 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_LOGWRITE: + fputs("Failed to write to log file", stderr); + break; + case FATAL_LOGERROR: + fputs("Internal logging error", stderr); + break; case FATAL_LOGOPEN: - case FATAL_LOGWRITE: - case FATAL_LOGERROR: 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)