dovecot-2.0-sslstream: lmtp: memdup default settings so RCPT TO ...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Feb 13 02:56:28 EET 2010
details: http://hg.dovecot.org/dovecot-2.0-sslstream/rev/6431c35a9670
changeset: 10343:6431c35a9670
user: Timo Sirainen <tss at iki.fi>
date: Tue Nov 17 14:01:33 2009 -0500
description:
lmtp: memdup default settings so RCPT TO settings lookups won't overwrite them.
diffstat:
3 files changed, 19 insertions(+), 4 deletions(-)
src/lmtp/client.c | 6 ++----
src/lmtp/lmtp-settings.c | 11 +++++++++++
src/lmtp/lmtp-settings.h | 6 ++++++
diffs (75 lines):
diff -r d784be144b4d -r 6431c35a9670 src/lmtp/client.c
--- 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 @@ static void client_read_settings(struct
{
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 @@ static void client_read_settings(struct
&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)
diff -r d784be144b4d -r 6431c35a9670 src/lmtp/lmtp-settings.c
--- 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 @@ const struct setting_parser_info lmtp_se
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);
+}
diff -r d784be144b4d -r 6431c35a9670 src/lmtp/lmtp-settings.h
--- 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,5 +1,8 @@
#ifndef LMTP_SETTINGS_H
#define LMTP_SETTINGS_H
+
+struct lda_settings;
+struct lmtp_settings;
struct lmtp_settings {
bool lmtp_proxy;
@@ -7,4 +10,7 @@ struct lmtp_settings {
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
More information about the dovecot-cvs
mailing list