diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c
index c6cf1d8c0d18e721f3ead9ddbd93953d32700484..067172415c6a19df446572034f4eb4a2efa9d08c 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. */