diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c index 87370c4f7..f9318ff75 100644 --- a/src/lib-sieve/sieve-result.c +++ b/src/lib-sieve/sieve-result.c @@ -1058,6 +1058,8 @@ static int _sieve_result_implicit_keep (&act_keep, aenv, tr_context, status); } + if (status == SIEVE_EXEC_FAILURE) + status = SIEVE_EXEC_KEEP_FAILED; return status; } @@ -1286,6 +1288,13 @@ static int sieve_result_action_commit_or_rollback sieve_result_action_rollback(result, rac); } + if (rac->keep) { + if (status == SIEVE_EXEC_FAILURE) + status = SIEVE_EXEC_KEEP_FAILED; + if (*commit_status == SIEVE_EXEC_FAILURE) + *commit_status = SIEVE_EXEC_KEEP_FAILED; + } + return status; }