dovecot-2.2: director: Log director disconnection errno correctly.

dovecot at dovecot.org dovecot at dovecot.org
Mon Jul 29 22:19:17 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/0ad8da149774
changeset: 16618:0ad8da149774
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Jul 29 22:10:01 2013 +0300
description:
director: Log director disconnection errno correctly.

diffstat:

 src/director/director-connection.c |  13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diffs (52 lines):

diff -r 0e0eb964685a -r 0ad8da149774 src/director/director-connection.c
--- a/src/director/director-connection.c	Mon Jul 29 22:08:26 2013 +0300
+++ b/src/director/director-connection.c	Mon Jul 29 22:10:01 2013 +0300
@@ -124,7 +124,8 @@
 static void director_connection_disconnected(struct director_connection **conn);
 static void director_connection_reconnect(struct director_connection **conn,
 					  const char *reason);
-static void director_connection_log_disconnect(struct director_connection *conn);
+static void
+director_connection_log_disconnect(struct director_connection *conn, int err);
 
 static void ATTR_FORMAT(2, 3)
 director_cmd_error(struct director_connection *conn, const char *fmt, ...)
@@ -175,7 +176,7 @@
 
 static void director_connection_wait_timeout(struct director_connection *conn)
 {
-	director_connection_log_disconnect(conn);
+	director_connection_log_disconnect(conn, ETIMEDOUT);
 	director_connection_deinit(&conn,
 		"Timeout waiting for disconnect after CONNECT");
 }
@@ -1271,7 +1272,7 @@
 }
 
 static void
-director_connection_log_disconnect(struct director_connection *conn)
+director_connection_log_disconnect(struct director_connection *conn, int err)
 {
 	unsigned int secs = ioloop_time - conn->created;
 	string_t *str = t_str_new(128);
@@ -1287,8 +1288,10 @@
 
 	str_printfa(str, "Director %s disconnected: ", conn->name);
 	str_append(str, "Connection closed");
-	if (errno != 0 && errno != EPIPE)
+	if (err != 0 && err != EPIPE) {
+		errno = err;
 		str_printfa(str, ": %m");
+	}
 
 	str_printfa(str, " (connected %u secs, "
 		    "in=%"PRIuUOFF_T" out=%"PRIuUOFF_T,
@@ -1312,7 +1315,7 @@
 		return;
 	case -1:
 		/* disconnected */
-		director_connection_log_disconnect(conn);
+		director_connection_log_disconnect(conn, conn->input->stream_errno);
 		director_connection_disconnected(&conn);
 		return;
 	case -2:


More information about the dovecot-cvs mailing list