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