changeset 8118:6665a641780c HEAD

deliver: If we're dying because we can't write to log file, write error to stderr.
author Timo Sirainen <tss@iki.fi>
date Fri, 29 Aug 2008 09:58:54 +0300
parents 079ed76a987d
children c96d9af856d1
files src/deliver/deliver.c
diffstat 1 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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)