Mercurial > dovecot > core-2.2
changeset 19950:4ccd54122839
imap: Made LDA settings accessible from plugins.
This way, plugins can also send mail.
author | Stephan Bosch <stephan@rename-it.nl> |
---|---|
date | Tue, 22 Mar 2016 01:16:26 +0100 |
parents | 761f81b9a814 |
children | a3560297529f |
files | src/imap/Makefile.am src/imap/imap-client.c src/imap/imap-client.h src/imap/main.c |
diffstat | 4 files changed, 23 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap/Makefile.am Tue Mar 22 09:19:45 2016 +0200 +++ b/src/imap/Makefile.am Tue Mar 22 01:16:26 2016 +0100 @@ -8,6 +8,7 @@ -I$(top_srcdir)/src/lib-dict \ -I$(top_srcdir)/src/lib-master \ -I$(top_srcdir)/src/lib-mail \ + -I$(top_srcdir)/src/lib-lda \ -I$(top_srcdir)/src/lib-imap \ -I$(top_srcdir)/src/lib-imap-urlauth \ -I$(top_srcdir)/src/lib-imap-storage \ @@ -18,10 +19,12 @@ imap_LDADD = \ ../lib-imap-urlauth/libimap-urlauth.la \ + $(LIBDOVECOT_LDA) \ $(LIBDOVECOT_STORAGE) \ $(LIBDOVECOT) imap_DEPENDENCIES = \ ../lib-imap-urlauth/libimap-urlauth.la \ + $(LIBDOVECOT_LDA) \ $(LIBDOVECOT_STORAGE_DEPS) \ $(LIBDOVECOT_DEPS)
--- a/src/imap/imap-client.c Tue Mar 22 09:19:45 2016 +0200 +++ b/src/imap/imap-client.c Tue Mar 22 01:16:26 2016 +0100 @@ -79,7 +79,8 @@ struct client *client_create(int fd_in, int fd_out, const char *session_id, struct mail_user *user, struct mail_storage_service_user *service_user, - const struct imap_settings *set) + const struct imap_settings *set, + const struct lda_settings *lda_set) { const struct mail_storage_settings *mail_set; struct client *client; @@ -96,6 +97,7 @@ client->pool = pool; client->v = imap_client_vfuncs; client->set = set; + client->lda_set = lda_set; client->service_user = service_user; client->session_id = p_strdup(pool, session_id); client->fd_in = fd_in;
--- a/src/imap/imap-client.h Tue Mar 22 09:19:45 2016 +0200 +++ b/src/imap/imap-client.h Tue Mar 22 01:16:26 2016 +0100 @@ -13,6 +13,7 @@ struct client; struct mail_storage; struct mail_storage_service_ctx; +struct lda_settings; struct imap_parser; struct imap_arg; struct imap_urlauth_context; @@ -126,7 +127,8 @@ pool_t pool; struct mail_storage_service_user *service_user; - const struct imap_settings *set; + const struct imap_settings *set; + const struct lda_settings *lda_set; string_t *capability_string; struct mail_user *user; @@ -216,7 +218,8 @@ struct client *client_create(int fd_in, int fd_out, const char *session_id, struct mail_user *user, struct mail_storage_service_user *service_user, - const struct imap_settings *set); + const struct imap_settings *set, + const struct lda_settings *lda_set); void client_destroy(struct client *client, const char *reason) ATTR_NULL(2); /* Disconnect client connection */
--- a/src/imap/main.c Tue Mar 22 09:19:45 2016 +0200 +++ b/src/imap/main.c Tue Mar 22 01:16:26 2016 +0100 @@ -17,6 +17,7 @@ #include "master-login.h" #include "mail-user.h" #include "mail-storage-service.h" +#include "lda-settings.h" #include "imap-master-client.h" #include "imap-resp-code.h" #include "imap-commands.h" @@ -219,7 +220,8 @@ struct mail_user *mail_user; struct mail_namespace *ns; struct client *client; - struct imap_settings *set; + struct imap_settings *imap_set; + struct lda_settings *lda_set; const char *errstr; enum mail_error mail_error; @@ -244,15 +246,18 @@ return -1; } - set = mail_storage_service_user_get_set(user)[1]; - if (set->verbose_proctitle) + imap_set = mail_storage_service_user_get_set(user)[1]; + if (imap_set->verbose_proctitle) verbose_proctitle = TRUE; + lda_set = mail_storage_service_user_get_set(user)[2]; - settings_var_expand(&imap_setting_parser_info, set, mail_user->pool, - mail_user_var_expand_table(mail_user)); + settings_var_expand(&imap_setting_parser_info, imap_set, + mail_user->pool, mail_user_var_expand_table(mail_user)); + settings_var_expand(&lda_setting_parser_info, lda_set, + mail_user->pool, mail_user_var_expand_table(mail_user)); client = client_create(fd_in, fd_out, input->session_id, - mail_user, user, set); + mail_user, user, imap_set, lda_set); client->userdb_fields = input->userdb_fields == NULL ? NULL : p_strarray_dup(client->pool, input->userdb_fields); *client_r = client; @@ -362,6 +367,7 @@ { static const struct setting_parser_info *set_roots[] = { &imap_setting_parser_info, + &lda_setting_parser_info, NULL }; struct master_login_settings login_set;