diff --git a/src/lib-sieve/sieve-actions.c b/src/lib-sieve/sieve-actions.c index 95e15e7ba4a79abd66fa7d2a59907f95784ace6a..1cfa0f2415f2df73c17ce59942a1a9c3b0eb6ae4 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 863892ae37bfb8d1a774c18ff563e85b7e4e0a83..00a144f2ee51ff9399957848a7dceafb3ad559bd 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 0000000000000000000000000000000000000000..b308d74c6c314266d3f7390b1d530003cee95792 --- /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";