From 9f09b81e666844727c46089b32e7facea4859a0a Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@dovecot.fi>
Date: Thu, 29 Mar 2018 00:07:47 +0200
Subject: [PATCH] lda-sieve plugin: Do not execute the sieve_discard script
 when an error occurs.

---
 src/plugins/lda-sieve/lda-sieve-plugin.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c
index c6cf1d8c0..067172415 100644
--- a/src/plugins/lda-sieve/lda-sieve-plugin.c
+++ b/src/plugins/lda-sieve/lda-sieve-plugin.c
@@ -436,6 +436,8 @@ lda_sieve_execute_script(struct lda_sieve_run_context *srctx,
 	bool debug = srctx->mdctx->rcpt_user->mail_debug;
 	bool user_script, more;
 
+	*error_r = SIEVE_ERROR_NONE;
+
 	user_script = ( script == srctx->user_script );
 
 	if ( user_script ) {
@@ -581,6 +583,8 @@ static int lda_sieve_execute_scripts
 				/* End of normal script sequence */
 				break;
 			}
+		} else if ( error != SIEVE_ERROR_NONE ) {
+			break;
 		} else if ( sieve_multiscript_will_discard(mscript) &&
 			srctx->discard_script != NULL ) {
 			/* Mail is set to be discarded, but we have a discard script. */
-- 
GitLab