From bc61a31abe558cb92662af87aae5fab245032b4e Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Sun, 20 Oct 2024 01:44:05 +0200 Subject: [PATCH] lib-sieve: sieve-storage - Add event parameter to sieve_storage_sequence_create() --- src/lib-sieve/sieve-script.c | 2 +- src/lib-sieve/sieve-storage-private.h | 1 + src/lib-sieve/sieve-storage.c | 7 ++++++- src/lib-sieve/sieve-storage.h | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c index 445f848e1..dbbe303f7 100644 --- a/src/lib-sieve/sieve-script.c +++ b/src/lib-sieve/sieve-script.c @@ -959,7 +959,7 @@ int sieve_script_sequence_create(struct sieve_instance *svinst, *sseq_r = NULL; sieve_error_args_init(&error_code_r, NULL); - if (sieve_storage_sequence_create(svinst, location, + if (sieve_storage_sequence_create(svinst, svinst->event, location, &storage_seq, error_code_r) < 0) return -1; diff --git a/src/lib-sieve/sieve-storage-private.h b/src/lib-sieve/sieve-storage-private.h index 7dd007355..b84ba3481 100644 --- a/src/lib-sieve/sieve-storage-private.h +++ b/src/lib-sieve/sieve-storage-private.h @@ -168,6 +168,7 @@ struct sieve_storage_save_context { struct sieve_storage_sequence { struct sieve_instance *svinst; + struct event *event_parent; char *location; bool done:1; diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c index 05fe830ef..598d14576 100644 --- a/src/lib-sieve/sieve-storage.c +++ b/src/lib-sieve/sieve-storage.c @@ -1650,6 +1650,7 @@ sieve_storage_get_last_error(struct sieve_storage *storage, */ int sieve_storage_sequence_create(struct sieve_instance *svinst, + struct event *event_parent, const char *location, struct sieve_storage_sequence **sseq_r, enum sieve_error *error_code_r) @@ -1663,6 +1664,9 @@ int sieve_storage_sequence_create(struct sieve_instance *svinst, sseq->svinst = svinst; sseq->location = i_strdup(location); + sseq->event_parent = event_parent; + event_ref(event_parent); + *sseq_r = sseq; return 0; } @@ -1680,7 +1684,7 @@ int sieve_storage_sequence_next(struct sieve_storage_sequence *sseq, return 0; sseq->done = TRUE; - if (sieve_storage_create(svinst, svinst->event, sseq->location, 0, + if (sieve_storage_create(svinst, sseq->event_parent, sseq->location, 0, storage_r, error_code_r) < 0) return -1; return 1; @@ -1694,6 +1698,7 @@ void sieve_storage_sequence_free(struct sieve_storage_sequence **_sseq) return; *_sseq = NULL; + event_unref(&sseq->event_parent); i_free(sseq->location); i_free(sseq); } diff --git a/src/lib-sieve/sieve-storage.h b/src/lib-sieve/sieve-storage.h index 0a38ea5d5..0fe2a3c1b 100644 --- a/src/lib-sieve/sieve-storage.h +++ b/src/lib-sieve/sieve-storage.h @@ -188,6 +188,7 @@ void sieve_storage_set_modified(struct sieve_storage *storage, struct sieve_storage_sequence; int sieve_storage_sequence_create(struct sieve_instance *svinst, + struct event *event_parent, const char *location, struct sieve_storage_sequence **sseq_r, enum sieve_error *error_code_r); -- GitLab