From 93ad05b48f81be4135873f44d924736d2914a3a6 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Sat, 10 Apr 2021 23:49:21 +0200
Subject: [PATCH] lib-sieve: sieve-result - Record per-action error handler.

Makes sure it is consistent for a later commit when action exection is more fragmented.
---
 src/lib-sieve/sieve-result.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c
index a88cae724..923ebc8b8 100644
--- a/src/lib-sieve/sieve-result.c
+++ b/src/lib-sieve/sieve-result.c
@@ -36,6 +36,7 @@ struct event_category event_category_sieve_action = {
 struct sieve_result_action {
 	struct sieve_action action;
 
+	struct sieve_error_handler *ehandler;
 	void *tr_context;
 	int status;
 
@@ -911,9 +912,11 @@ static void
 sieve_action_execution_pre(struct sieve_result_execution *rexec,
 			   struct sieve_result_action *ract)
 {
+	if (ract->ehandler == NULL)
+		ract->ehandler = rexec->ehandler;
 	rexec->action_env.action = &ract->action;
 	rexec->action_env.event = ract->action.event;
-	rexec->action_env.ehandler = rexec->ehandler;
+	rexec->action_env.ehandler = ract->ehandler;
 }
 
 static void
@@ -1204,6 +1207,7 @@ sieve_result_implicit_keep_execute(struct sieve_result_execution *rexec,
 	if (rexec->keep_equiv_action != NULL)
 		return;
 
+	ract_keep->ehandler = rexec->ehandler;
 	rexec->keep_success = success;
 	rexec->keep_status = status;
 
-- 
GitLab