[dovecot-cvs] dovecot/src/master auth-process.c, 1.53, 1.54 log.c, 1.1, 1.2 log.h, 1.1, 1.2 login-process.c, 1.53, 1.54 mail-process.c, 1.43, 1.44

cras at procontrol.fi cras at procontrol.fi
Sun May 23 22:23:59 EEST 2004


Update of /home/cvs/dovecot/src/master
In directory talvi:/tmp/cvs-serv6663

Modified Files:
	auth-process.c log.c log.h login-process.c mail-process.c 
Log Message:
logging cleanups.



Index: auth-process.c
===================================================================
RCS file: /home/cvs/dovecot/src/master/auth-process.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- a/auth-process.c	17 May 2004 01:32:17 -0000	1.53
+++ b/auth-process.c	23 May 2004 19:23:57 -0000	1.54
@@ -254,6 +254,7 @@
 {
 	static char *argv[] = { NULL, NULL };
 	const char *prefix;
+	struct log_io *log;
 	pid_t pid;
 	int fd[2], log_fd, i;
 
@@ -263,8 +264,7 @@
 		return -1;
 	}
 
-	prefix = t_strdup_printf("auth(%s): ", group->set->name);
-	log_fd = log_create_pipe(prefix);
+	log_fd = log_create_pipe(&log);
 	if (log_fd < 0)
 		pid = -1;
 	else {
@@ -282,6 +282,9 @@
 
 	if (pid != 0) {
 		/* master */
+		prefix = t_strdup_printf("auth(%s): ", group->set->name);
+		log_set_prefix(log, prefix);
+
 		net_set_nonblock(fd[0], TRUE);
 		fd_close_on_exec(fd[0], TRUE);
 		auth_process_new(pid, fd[0], group);
@@ -290,19 +293,22 @@
 		return pid;
 	}
 
+	prefix = t_strdup_printf("master-auth(%s): ", group->set->name);
+	log_set_prefix(log, prefix);
+
 	/* move master communication handle to 0 */
 	if (dup2(fd[1], 0) < 0)
-		i_fatal("auth: dup2(stdin) failed: %m");
+		i_fatal("dup2(stdin) failed: %m");
 
 	(void)close(fd[0]);
 	(void)close(fd[1]);
 
 	/* set stdout to /dev/null, so anything written into it gets ignored. */
 	if (dup2(null_fd, 1) < 0)
-		i_fatal("auth: dup2(stdout) failed: %m");
+		i_fatal("dup2(stdout) failed: %m");
 
 	if (dup2(log_fd, 2) < 0)
-		i_fatal("auth: dup2(stderr) failed: %m");
+		i_fatal("dup2(stderr) failed: %m");
 
 	child_process_init_env();
 
@@ -310,7 +316,7 @@
 	   sure it's not closed afterwards. */
 	if (group->listen_fd != 3) {
 		if (dup2(group->listen_fd, 3) < 0)
-			i_fatal("auth: dup2() failed: %m");
+			i_fatal("dup2() failed: %m");
 	}
 
 	for (i = 0; i <= 3; i++)

Index: log.c
===================================================================
RCS file: /home/cvs/dovecot/src/master/log.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- a/log.c	10 May 2004 16:05:10 -0000	1.1
+++ b/log.c	23 May 2004 19:23:57 -0000	1.2
@@ -82,6 +82,8 @@
 
 static int log_it(struct log_io *log_io, const char *line, int continues)
 {
+	const char *prefix;
+
 	if (log_io->next_log_type == '\0') {
 		if (line[0] == 1 && line[1] != '\0') {
 			/* our internal protocol.
@@ -94,15 +96,16 @@
 	}
 
 	t_push();
+	prefix = log_io->prefix != NULL ? log_io->prefix : "";
 	switch (log_io->next_log_type) {
 	case 'I':
-		i_info("%s%s", log_io->prefix, line);
+		i_info("%s%s", prefix, line);
 		break;
 	case 'W':
-		i_warning("%s%s", log_io->prefix, line);
+		i_warning("%s%s", prefix, line);
 		break;
 	default:
-		i_error("%s%s", log_io->prefix, line);
+		i_error("%s%s", prefix, line);
 		break;
 	}
 	t_pop();
@@ -152,7 +155,7 @@
 		log_unthrottle(log_io);
 }
 
-int log_create_pipe(const char *prefix)
+int log_create_pipe(struct log_io **log_r)
 {
 	struct log_io *log_io;
 	int fd[2];
@@ -166,7 +169,6 @@
 	fd_close_on_exec(fd[1], TRUE);
 
 	log_io = i_new(struct log_io, 1);
-	log_io->prefix = i_strdup(prefix);
 	log_io->stream = i_stream_create_file(fd[0], default_pool, 1024, TRUE);
 
 	throttle_count++;
@@ -177,9 +179,17 @@
 	log_io->next = log_ios;
 	log_ios = log_io;
 
+	if (log_r != NULL)
+		*log_r = log_io;
 	return fd[1];
 }
 
+void log_set_prefix(struct log_io *log, const char *prefix)
+{
+	i_free(log->prefix);
+	log->prefix = i_strdup(prefix);
+}
+
 static void log_io_free(struct log_io *log_io)
 {
 	const unsigned char *data;

Index: log.h
===================================================================
RCS file: /home/cvs/dovecot/src/master/log.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- a/log.h	10 May 2004 16:05:10 -0000	1.1
+++ b/log.h	23 May 2004 19:23:57 -0000	1.2
@@ -1,7 +1,11 @@
 #ifndef __LOG_H
 #define __LOG_H
 
-int log_create_pipe(const char *prefix);
+struct log_io;
+
+int log_create_pipe(struct log_io **log_r);
+void log_set_prefix(struct log_io *log, const char *prefix);
+
 void log_init(void);
 void log_deinit(void);
 

Index: login-process.c
===================================================================
RCS file: /home/cvs/dovecot/src/master/login-process.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- a/login-process.c	10 May 2004 16:05:10 -0000	1.53
+++ b/login-process.c	23 May 2004 19:23:57 -0000	1.54
@@ -422,6 +422,7 @@
 static pid_t create_login_process(struct login_group *group)
 {
 	static const char *argv[] = { NULL, NULL };
+	struct log_io *log;
 	const char *prefix;
 	pid_t pid;
 	int fd[2], log_fd;
@@ -442,9 +443,7 @@
 		return -1;
 	}
 
-	prefix = t_strdup_printf("%s-login: ",
-				 process_names[group->process_type]);
-	log_fd = log_create_pipe(prefix);
+	log_fd = log_create_pipe(&log);
 	if (log_fd < 0)
 		pid = -1;
 	else {
@@ -462,6 +461,10 @@
 
 	if (pid != 0) {
 		/* master */
+		prefix = t_strdup_printf("%s-login: ",
+					 process_names[group->process_type]);
+		log_set_prefix(log, prefix);
+
 		net_set_nonblock(fd[0], TRUE);
 		fd_close_on_exec(fd[0], TRUE);
 		(void)login_process_new(group, pid, fd[0]);
@@ -470,23 +473,27 @@
 		return pid;
 	}
 
+	prefix = t_strdup_printf("master-%s-login: ",
+				 process_names[group->process_type]);
+	log_set_prefix(log, prefix);
+
 	/* move the listen handle */
 	if (dup2(group->set->listen_fd, LOGIN_LISTEN_FD) < 0)
-		i_fatal("login: dup2(listen_fd) failed: %m");
+		i_fatal("dup2(listen_fd) failed: %m");
 	fd_close_on_exec(LOGIN_LISTEN_FD, FALSE);
 
 	/* move the SSL listen handle */
 	if (dup2(group->set->ssl_listen_fd, LOGIN_SSL_LISTEN_FD) < 0)
-		i_fatal("login: dup2(ssl_listen_fd) failed: %m");
+		i_fatal("dup2(ssl_listen_fd) failed: %m");
 	fd_close_on_exec(LOGIN_SSL_LISTEN_FD, FALSE);
 
 	/* move communication handle */
 	if (dup2(fd[1], LOGIN_MASTER_SOCKET_FD) < 0)
-		i_fatal("login: dup2(master) failed: %m");
+		i_fatal("dup2(master) failed: %m");
 	fd_close_on_exec(LOGIN_MASTER_SOCKET_FD, FALSE);
 
 	if (dup2(log_fd, 2) < 0)
-		i_fatal("login: dup2(stderr) failed: %m");
+		i_fatal("dup2(stderr) failed: %m");
 	fd_close_on_exec(2, FALSE);
 
 	(void)close(fd[0]);

Index: mail-process.c
===================================================================
RCS file: /home/cvs/dovecot/src/master/mail-process.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- a/mail-process.c	22 May 2004 22:36:46 -0000	1.43
+++ b/mail-process.c	23 May 2004 19:23:57 -0000	1.44
@@ -150,10 +150,11 @@
 			struct ip_addr *ip,
 			struct auth_master_reply *reply, const char *data)
 {
-	const char *argv[4];
 	struct settings *set = group->set;
+	const char *argv[4];
 	const char *addr, *mail, *user, *chroot_dir, *home_dir, *full_home_dir;
 	const char *executable, *p, *prefix;
+	struct log_io *log;
 	char title[1024];
 	pid_t pid;
 	int i, err, ret, log_fd;
@@ -179,9 +180,7 @@
 		return FALSE;
 	}
 
-	prefix = t_strdup_printf("%s(%s): ", process_names[group->process_type],
-				 data + reply->virtual_user_idx);
-	log_fd = log_create_pipe(prefix);
+	log_fd = log_create_pipe(&log);
 
 	pid = fork();
 	if (pid < 0) {
@@ -192,25 +191,35 @@
 
 	if (pid != 0) {
 		/* master */
+		prefix = t_strdup_printf("%s(%s): ",
+					 process_names[group->process_type],
+					 data + reply->virtual_user_idx);
+		log_set_prefix(log, prefix);
+
 		mail_process_count++;
 		PID_ADD_PROCESS_TYPE(pid, group->process_type);
 		(void)close(log_fd);
 		return TRUE;
 	}
 
+	prefix = t_strdup_printf("master-%s(%s): ",
+				 process_names[group->process_type],
+				 data + reply->virtual_user_idx);
+	log_set_prefix(log, prefix);
+
 	child_process_init_env();
 
 	/* move the client socket into stdin and stdout fds */
 	fd_close_on_exec(socket, FALSE);
 	if (dup2(socket, 0) < 0)
-		i_fatal("mail: dup2(stdin) failed: %m");
+		i_fatal("dup2(stdin) failed: %m");
 	if (dup2(socket, 1) < 0)
-		i_fatal("mail: dup2(stdout) failed: %m");
+		i_fatal("dup2(stdout) failed: %m");
 	if (dup2(log_fd, 2) < 0)
-		i_fatal("mail: dup2(stderr) failed: %m");
+		i_fatal("dup2(stderr) failed: %m");
 
 	if (close(socket) < 0)
-		i_error("mail: close(mail client) failed: %m");
+		i_error("close(mail client) failed: %m");
 
 	/* setup environment - set the most important environment first
 	   (paranoia about filling up environment without noticing) */



More information about the dovecot-cvs mailing list