From 42223b14940974c43e2537a724ed54651a05058c Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Mon, 28 Nov 2011 00:40:43 +0100
Subject: [PATCH] lib-sieve: editheader: fixed implicit keep after runtime
 error. It did not use the original message in this case.

---
 src/lib-sieve/sieve-actions.c                 |  2 +-
 tests/extensions/editheader/errors.svtest     | 31 +++++++++++++++++++
 .../editheader/errors/runtime-error.sieve     |  6 ++++
 3 files changed, 38 insertions(+), 1 deletion(-)
 create mode 100644 tests/extensions/editheader/errors/runtime-error.sieve

diff --git a/src/lib-sieve/sieve-actions.c b/src/lib-sieve/sieve-actions.c
index 95e15e7ba..1cfa0f241 100644
--- a/src/lib-sieve/sieve-actions.c
+++ b/src/lib-sieve/sieve-actions.c
@@ -467,7 +467,7 @@ static bool act_store_execute
 	struct act_store_transaction *trans = 
 		(struct act_store_transaction *) tr_context;
 	struct mail *mail =	( action->mail != NULL ?
-		action->mail : sieve_message_get_mail(aenv->msgctx) );	
+		action->mail : aenv->msgdata->mail );	
 	struct mail_save_context *save_ctx;
 	struct mail_keywords *keywords = NULL;
 	bool result = TRUE;
diff --git a/tests/extensions/editheader/errors.svtest b/tests/extensions/editheader/errors.svtest
index 863892ae3..00a144f2e 100644
--- a/tests/extensions/editheader/errors.svtest
+++ b/tests/extensions/editheader/errors.svtest
@@ -66,3 +66,34 @@ test "Invalid field value" {
 	}
 }
 
+test_set "message" text:
+From: stephan@example.com
+To: tss@example.com
+Subject: Frop
+
+Frop!
+.
+;
+
+test "Implicit keep at runtime error" {
+	if not test_script_compile "errors/runtime-error.sieve" {
+		test_fail "compile failed";
+	}
+
+	if not test_script_run {
+		test_fail "run failed";
+	}
+
+	if test_result_execute {
+		test_fail "result execution should have failed";		
+	}
+
+	if not test_message :folder "INBOX" 0 {
+		test_fail "message not stored (no implicit keep)";
+	}
+
+	if exists "X-Frop" {
+		test_fail "implicit keep message has editheader changes";
+	}
+}
+
diff --git a/tests/extensions/editheader/errors/runtime-error.sieve b/tests/extensions/editheader/errors/runtime-error.sieve
new file mode 100644
index 000000000..b308d74c6
--- /dev/null
+++ b/tests/extensions/editheader/errors/runtime-error.sieve
@@ -0,0 +1,6 @@
+require "editheader";
+require "fileinto";
+
+addheader "X-Frop" "Friep";
+
+fileinto "Rediculous.non-existent.folder";
-- 
GitLab