diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c index 60c79e4405cfcd3f43582bc5b7a67ece40f3937f..4932800834d4fce226813b6f49a126dc0c834347 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)); }