From f690d141d557d5085516140c8fe40a6e5bb0b80d Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Sat, 12 Oct 2024 16:10:35 +0200 Subject: [PATCH] lib-sieve: plugins: copy: Use int for sieve_ext_copy_get_extension() status result --- src/lib-sieve/plugins/copy/sieve-ext-copy.h | 9 ++++++--- .../sieve-extprograms/sieve-extprograms-common.c | 11 ++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/lib-sieve/plugins/copy/sieve-ext-copy.h b/src/lib-sieve/plugins/copy/sieve-ext-copy.h index faf19dcb5..c550cadbd 100644 --- a/src/lib-sieve/plugins/copy/sieve-ext-copy.h +++ b/src/lib-sieve/plugins/copy/sieve-ext-copy.h @@ -1,13 +1,16 @@ #ifndef SIEVE_EXT_COPY_H #define SIEVE_EXT_COPY_H +extern const struct sieve_extension_def copy_extension; + /* sieve_ext_copy_get_extension(): * Get the extension struct for the copy extension. */ -static inline const struct sieve_extension *sieve_ext_copy_get_extension -(struct sieve_instance *svinst) +static inline int +sieve_ext_copy_get_extension(struct sieve_instance *svinst, + const struct sieve_extension **ext_r) { - return sieve_extension_get_by_name(svinst, "copy"); + return sieve_extension_register(svinst, ©_extension, FALSE, ext_r); } /* sieve_ext_copy_register_tag(): diff --git a/src/plugins/sieve-extprograms/sieve-extprograms-common.c b/src/plugins/sieve-extprograms/sieve-extprograms-common.c index b797383c3..49188ffb8 100644 --- a/src/plugins/sieve-extprograms/sieve-extprograms-common.c +++ b/src/plugins/sieve-extprograms/sieve-extprograms-common.c @@ -60,6 +60,7 @@ bool sieve_extprograms_ext_load(const struct sieve_extension *ext, void **context) { struct sieve_instance *svinst = ext->svinst; + const struct sieve_extension *copy_ext = NULL; const struct sieve_extension *var_ext = NULL; struct sieve_extprograms_ext_context *extctx; const char *extname = sieve_extension_name(ext); @@ -82,6 +83,10 @@ bool sieve_extprograms_ext_load(const struct sieve_extension *ext, input_eol = sieve_setting_get( svinst, t_strdup_printf("sieve_%s_input_eol", extname)); + if (sieve_extension_is(ext, sieve_ext_vnd_pipe)) { + if (sieve_ext_copy_get_extension(ext->svinst, ©_ext) < 0) + return FALSE; + } if (sieve_extension_is(ext, sieve_ext_vnd_execute)) { if (sieve_ext_variables_get_extension(ext->svinst, &var_ext) < 0) @@ -91,6 +96,7 @@ bool sieve_extprograms_ext_load(const struct sieve_extension *ext, extctx = i_new(struct sieve_extprograms_ext_context, 1); extctx->execute_timeout = SIEVE_EXTPROGRAMS_DEFAULT_EXEC_TIMEOUT_SECS; + extctx->copy_ext = copy_ext; extctx->var_ext = var_ext; if (bin_dir == NULL && socket_dir == NULL) { @@ -113,11 +119,6 @@ bool sieve_extprograms_ext_load(const struct sieve_extension *ext, } } - if (sieve_extension_is(ext, sieve_ext_vnd_pipe)) { - extctx->copy_ext = - sieve_ext_copy_get_extension(ext->svinst); - } - *context = extctx; return TRUE; } -- GitLab