changeset 8223:66ecd60b7ea2 HEAD

If a process dies because it's out of memory, mention *_process_size setting in the error message.
author Timo Sirainen <tss@iki.fi>
date Sun, 05 Oct 2008 00:06:56 +0300
parents 1155c1f7fed8
children 7ac86b33ad64
files src/master/child-process.c
diffstat 1 files changed, 19 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/master/child-process.c	Wed Oct 01 16:07:57 2008 +0300
+++ b/src/master/child-process.c	Sun Oct 05 00:06:56 2008 +0300
@@ -89,7 +89,8 @@
 	execv(executable, (char **)argv);
 }
 
-static const char *get_exit_status_message(enum fatal_exit_status status)
+static const char *get_exit_status_message(enum fatal_exit_status status,
+					   enum process_type process_type)
 {
 	switch (status) {
 	case FATAL_LOGOPEN:
@@ -99,6 +100,21 @@
 	case FATAL_LOGERROR:
 		return "Internal logging error";
 	case FATAL_OUTOFMEM:
+		switch (process_type) {
+		case PROCESS_TYPE_AUTH:
+		case PROCESS_TYPE_AUTH_WORKER:
+			return "Out of memory - see auth_process_size setting";
+		case PROCESS_TYPE_LOGIN:
+			return "Out of memory - see login_process_size setting";
+		case PROCESS_TYPE_IMAP:
+		case PROCESS_TYPE_POP3:
+			return "Out of memory - see mail_process_size setting";
+		case PROCESS_TYPE_UNKNOWN:
+		case PROCESS_TYPE_SSL_PARAM:
+		case PROCESS_TYPE_DICT:
+		case PROCESS_TYPE_MAX:
+			break;
+		}
 		return "Out of memory";
 	case FATAL_EXEC:
 		return "exec() failed";
@@ -148,7 +164,8 @@
 				   process->seen_fatal) {
 				/* the error was already logged. */
 			} else {
-				msg = get_exit_status_message(status);
+				msg = get_exit_status_message(status,
+							      process_type);
 				msg = msg == NULL ? "" :
 					t_strconcat(" (", msg, ")", NULL);
 				i_error("child %s (%s) returned error %d%s",