changeset 22694:2cf68aa64129

director: Fix logging disconnection error reasons The previous commit set errno=0, which weren't logged. If error string is provided, it doesn't matter what the errno is set (as long as it's not 0), so we'll just use EINVAL.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 28 Nov 2017 19:01:19 +0200
parents a11fd794807e
children 338c32a16562
files src/director/director-connection.c
diffstat 1 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/director/director-connection.c	Tue Nov 28 15:06:27 2017 +0200
+++ b/src/director/director-connection.c	Tue Nov 28 19:01:19 2017 +0200
@@ -2239,7 +2239,7 @@
 		ret = director_connection_send_users(conn);
 		o_stream_uncork(conn->output);
 		if (ret < 0) {
-			director_connection_log_disconnect(conn, 0,
+			director_connection_log_disconnect(conn, conn->output->stream_errno,
 				o_stream_get_error(conn->output));
 			director_connection_disconnected(&conn,
 				o_stream_get_error(conn->output));
@@ -2532,13 +2532,14 @@
 	ret = o_stream_send(conn->output, data, len);
 	if (ret != (off_t)len) {
 		if (ret < 0) {
-			director_connection_log_disconnect(conn, 0, t_strdup_printf(
-				"write() failed: %s",
-				o_stream_get_error(conn->output)));
+			director_connection_log_disconnect(conn,
+				conn->output->stream_errno,
+				t_strdup_printf("write() failed: %s",
+					o_stream_get_error(conn->output)));
 		} else {
-			director_connection_log_disconnect(conn, 0, t_strdup_printf(
-				"Output buffer full at %zu",
-				o_stream_get_buffer_used_size(conn->output)));
+			director_connection_log_disconnect(conn, EINVAL,
+				t_strdup_printf("Output buffer full at %zu",
+					o_stream_get_buffer_used_size(conn->output)));
 		}
 		o_stream_close(conn->output);
 		/* closing the stream when output buffer is full doesn't cause
@@ -2565,7 +2566,7 @@
 	str_printfa(str, "Ping timed out in %u.%03u secs: ",
 		    diff/1000, diff%1000);
 	director_ping_append_extra(conn, str, 0, (uintmax_t)-1);
-	director_connection_log_disconnect(conn, 0, str_c(str));
+	director_connection_log_disconnect(conn, EINVAL, str_c(str));
 	director_connection_disconnected(&conn, "Ping timeout");
 }
 
@@ -2578,7 +2579,7 @@
 		"PONG reply not received in %u.%03u secs, "
 		"although other input keeps coming",
 		diff/1000, diff%1000);
-	director_connection_log_disconnect(conn, 0, errstr);
+	director_connection_log_disconnect(conn, EINVAL, errstr);
 	director_connection_disconnected(&conn, "Pong timeout");
 }