dovecot-2.2: log: Don't shutdown until all log writers have gone.

dovecot at dovecot.org dovecot at dovecot.org
Sun May 20 03:26:24 EEST 2012


details:   http://hg.dovecot.org/dovecot-2.2/rev/174a22a052fe
changeset: 14273:174a22a052fe
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Mar 04 12:24:29 2012 +0200
description:
log: Don't shutdown until all log writers have gone.
This fixed losing log messages during shutdown.

diffstat:

 src/log/log-connection.c |  2 ++
 src/log/main.c           |  8 ++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diffs (31 lines):

diff -r f7a3714dc390 -r 174a22a052fe src/log/log-connection.c
--- a/src/log/log-connection.c	Sun Mar 04 12:09:35 2012 +0200
+++ b/src/log/log-connection.c	Sun Mar 04 12:24:29 2012 +0200
@@ -341,6 +341,8 @@
 		i_error("close(log connection fd) failed: %m");
 	i_free(log->default_prefix);
 	i_free(log);
+
+	master_service_client_connection_destroyed(master_service);
 }
 
 void log_connections_init(void)
diff -r f7a3714dc390 -r 174a22a052fe src/log/main.c
--- a/src/log/main.c	Sun Mar 04 12:09:35 2012 +0200
+++ b/src/log/main.c	Sun Mar 04 12:24:29 2012 +0200
@@ -37,9 +37,13 @@
 
 static void client_connected(struct master_service_connection *conn)
 {
-	if (conn->fifo)
+	if (conn->fifo) {
 		log_connection_create(errorbuf, conn->fd, conn->listen_fd);
-	else if (strcmp(conn->name, "log-errors") == 0)
+		/* kludge: normally FIFOs aren't counted as connections,
+		   but here we want log process to stay open until all writers
+		   have closed */
+		conn->fifo = FALSE;
+	} else if (strcmp(conn->name, "log-errors") == 0)
 		doveadm_connection_create(errorbuf, conn->fd);
 	else {
 		i_error("Unknown listener name: %s", conn->name);


More information about the dovecot-cvs mailing list