From a95b0579b89c13fb3ee5700e76cbe6a4a3e898e0 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Wed, 23 Mar 2016 02:41:46 +0100
Subject: [PATCH] lib-sieve: program client: local: Destroy the output stream
 before the fd is closed.

An earlier change exposed this bug. Before, it was always a socket, and closing the output early meant using shutdown() rather than close().
This bug caused an assert failure.
---
 src/lib-sieve/util/program-client.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib-sieve/util/program-client.c b/src/lib-sieve/util/program-client.c
index 7f0d8e26e..1b9b26218 100644
--- a/src/lib-sieve/util/program-client.c
+++ b/src/lib-sieve/util/program-client.c
@@ -48,10 +48,10 @@ static int program_client_close_output(struct program_client *pclient)
 {
 	int ret;
 
-	if ( (ret=pclient->close_output(pclient)) < 0 )
-		return -1;
 	if ( pclient->program_output != NULL )
 		o_stream_destroy(&pclient->program_output);
+	if ( (ret=pclient->close_output(pclient)) < 0 )
+		return -1;
 	pclient->program_output = NULL;
 
 	return ret;
-- 
GitLab