From 07ef39ee46bedf74f5eb1460a9da489f44af8a8e Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Sat, 17 Sep 2011 00:00:03 +0200 Subject: [PATCH] lda-sieve: fall back to global recipient_delimiter setting if plugin/recipient_delimiter is not set. --- src/plugins/lda-sieve/lda-sieve-plugin.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c index 60b401298..6b61ffefa 100644 --- a/src/plugins/lda-sieve/lda-sieve-plugin.c +++ b/src/plugins/lda-sieve/lda-sieve-plugin.c @@ -42,13 +42,13 @@ static deliver_mail_func_t *next_deliver_mail; static const char *lda_sieve_get_homedir (void *context) { - struct mail_user *mail_user = (struct mail_user *) context; + struct mail_deliver_context *mdctx = (struct mail_deliver_context *)context; const char *home = NULL; - if ( mail_user == NULL ) + if ( mdctx == NULL || mdctx->dest_user == NULL ) return NULL; - if ( mail_user_get_home(mail_user, &home) <= 0 ) + if ( mail_user_get_home(mdctx->dest_user, &home) <= 0 ) return NULL; return home; @@ -57,12 +57,19 @@ static const char *lda_sieve_get_homedir static const char *lda_sieve_get_setting (void *context, const char *identifier) { - struct mail_user *mail_user = (struct mail_user *) context; + struct mail_deliver_context *mdctx = (struct mail_deliver_context *)context; + const char *value = NULL; - if ( mail_user == NULL ) + if ( mdctx == NULL ) return NULL; - return mail_user_plugin_getenv(mail_user, identifier); + if ( mdxtx->dest_user == NULL || + (value=mail_user_plugin_getenv(mail_user, identifier)) == NULL ) { + if ( strcmp(identifier, "recipient_delimiter") == 0 ) + value = mdctx->set->recipient_delimiter; + } + + return value; } static const struct sieve_environment lda_sieve_env = { @@ -665,7 +672,7 @@ static int lda_sieve_deliver_mail /* Initialize Sieve engine */ - svinst = sieve_init(&lda_sieve_env, mdctx->dest_user, debug); + svinst = sieve_init(&lda_sieve_env, mdctx, debug); /* Initialize master error handler */ -- GitLab