From d6079cf4f4c43e39e9e794879e951d2741020de4 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Tue, 8 Sep 2015 01:07:43 +0200
Subject: [PATCH] managesieve: Started using io_stream_get_disconnect_reason()
 for default client_destroy() reason.

---
 src/managesieve/managesieve-client.c | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)

diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c
index 60c79e440..493280083 100644
--- a/src/managesieve/managesieve-client.c
+++ b/src/managesieve/managesieve-client.c
@@ -9,6 +9,7 @@
 #include "net.h"
 #include "istream.h"
 #include "ostream.h"
+#include "iostream.h"
 #include "var-expand.h"
 #include "master-service.h"
 #include "mail-storage-service.h"
@@ -211,19 +212,6 @@ static const char *client_stats(struct client *client)
 	return str_c(str);
 }
 
-static const char *client_get_disconnect_reason(struct client *client)
-{
-	errno = client->input->stream_errno != 0 ?
-		client->input->stream_errno :
-		client->output->stream_errno;
-	if (errno == 0 || errno == EPIPE)
-		return "Connection closed";
-	return t_strdup_printf("Connection closed: %s",
-			       client->input->stream_errno != 0 ?
-			       i_stream_get_error(client->input) :
-			       o_stream_get_error(client->output));
-}
-
 void client_destroy(struct client *client, const char *reason)
 {
 	int ret;
@@ -234,8 +222,10 @@ void client_destroy(struct client *client, const char *reason)
 
 	if (!client->disconnected) {
 		client->disconnected = TRUE;
-		if (reason == NULL)
-			reason = client_get_disconnect_reason(client);
+		if (reason == NULL) {
+			reason = io_stream_get_disconnect_reason(client->input,
+								 client->output);
+		}
 		i_info("%s %s", reason, client_stats(client));
 	}
 
-- 
GitLab