Mercurial > dovecot > core-2.2
changeset 10342:6431c35a9670 HEAD
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 17 Nov 2009 14:01:33 -0500 |
parents | d784be144b4d |
children | 062fe605cd19 |
files | src/lmtp/client.c src/lmtp/lmtp-settings.c src/lmtp/lmtp-settings.h |
diffstat | 3 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lmtp/client.c Tue Nov 17 13:47:14 2009 -0500 +++ b/src/lmtp/client.c Tue Nov 17 14:01:33 2009 -0500 @@ -14,6 +14,7 @@ #include "mail-storage.h" #include "mail-storage-service.h" #include "main.h" +#include "lmtp-settings.h" #include "lmtp-proxy.h" #include "commands.h" #include "client.h" @@ -148,7 +149,6 @@ { struct mail_storage_service_input input; const char *error; - void **sets; memset(&input, 0, sizeof(input)); input.module = input.service = "lmtp"; @@ -161,9 +161,7 @@ &error) < 0) i_fatal("%s", error); - sets = master_service_settings_get_others(master_service); - client->set = sets[1]; - client->lmtp_set = sets[2]; + lmtp_settings_dup(client->pool, &client->lmtp_set, &client->set); } static void client_generate_session_id(struct client *client)
--- a/src/lmtp/lmtp-settings.c Tue Nov 17 13:47:14 2009 -0500 +++ b/src/lmtp/lmtp-settings.c Tue Nov 17 14:01:33 2009 -0500 @@ -4,6 +4,7 @@ #include "buffer.h" #include "settings-parser.h" #include "service-settings.h" +#include "master-service.h" #include "master-service-settings.h" #include "lda-settings.h" #include "lmtp-settings.h" @@ -81,3 +82,13 @@ MEMBER(check_func) NULL, MEMBER(dependencies) lmtp_setting_dependencies }; + +void lmtp_settings_dup(pool_t pool, const struct lmtp_settings **lmtp_set_r, + const struct lda_settings **lda_set_r) +{ + void **sets; + + sets = master_service_settings_get_others(master_service); + *lda_set_r = settings_dup(&lda_setting_parser_info, sets[1], pool); + *lmtp_set_r = settings_dup(&lmtp_setting_parser_info, sets[2], pool); +}
--- a/src/lmtp/lmtp-settings.h Tue Nov 17 13:47:14 2009 -0500 +++ b/src/lmtp/lmtp-settings.h Tue Nov 17 14:01:33 2009 -0500 @@ -1,10 +1,16 @@ #ifndef LMTP_SETTINGS_H #define LMTP_SETTINGS_H +struct lda_settings; +struct lmtp_settings; + struct lmtp_settings { bool lmtp_proxy; }; extern const struct setting_parser_info lmtp_setting_parser_info; +void lmtp_settings_dup(pool_t pool, const struct lmtp_settings **lmtp_set_r, + const struct lda_settings **lda_set_r); + #endif