From 85680b40d0c7247fb3183c1f39c246f7299cdfd4 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@dovecot.fi>
Date: Mon, 17 Oct 2016 23:59:58 +0200
Subject: [PATCH] lib-sieve: result object: Fixed bug in detection of the
 execution of delivery action.

Sequential exections would override a previously flagged delivery, which is wrong.
This caused the sieve_discard feature to trigger for messages that were actually delivered somewhere by an earlier script in the sequence.
---
 src/lib-sieve/sieve-result.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c
index 6f7c62c4a..d960c34ef 100644
--- a/src/lib-sieve/sieve-result.c
+++ b/src/lib-sieve/sieve-result.c
@@ -1326,8 +1326,10 @@ static int sieve_result_transaction_commit_or_rollback
 
 	if ( *implicit_keep && keep != NULL ) *keep = TRUE;
 
-	if ( commit_status == SIEVE_EXEC_OK )
-		result->executed_delivery = seen_delivery;
+	if ( commit_status == SIEVE_EXEC_OK ) {
+		result->executed_delivery =
+			result->executed_delivery || seen_delivery;
+	}
 
 	return commit_status;
 }
-- 
GitLab