changeset 7987:a02dd752ef43 HEAD

deliver: Another try at getting LDA settings to override plugin settings.
author Timo Sirainen <tss@iki.fi>
date Wed, 09 Jul 2008 19:35:41 +0530
parents bcd70b69c7e5
children e069e4c221e1
files src/deliver/deliver.c
diffstat 1 files changed, 10 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/deliver/deliver.c	Wed Jul 09 17:53:37 2008 +0530
+++ b/src/deliver/deliver.c	Wed Jul 09 19:35:41 2008 +0530
@@ -289,7 +289,7 @@
 static void config_file_init(const char *path)
 {
 	struct istream *input;
-	const char *key, *value;
+	const char *key, *value, *str;
 	char *line, *p, quote;
 	int fd, sections = 0;
 	bool lda_section = FALSE, pop3_section = FALSE, plugin_section = FALSE;
@@ -345,10 +345,9 @@
 			if (strchr(line, '{') != NULL) {
 				if (strcmp(line, "protocol lda {") == 0)
 					lda_section = TRUE;
-				else if (strcmp(line, "plugin {") == 0) {
+				else if (strcmp(line, "plugin {") == 0)
 					plugin_section = TRUE;
-					lda_section = TRUE;
-				} else if (strcmp(line, "protocol pop3 {") == 0)
+				else if (strcmp(line, "protocol pop3 {") == 0)
 					pop3_section = TRUE;
 				else if (strncmp(line, "namespace ", 10) == 0) {
 					ns_section = TRUE;
@@ -392,7 +391,7 @@
 		while (p > line && IS_WHITE(p[-1])) p--;
 		key = t_strdup_until(line, p);
 
-		if (sections > 0 && !lda_section) {
+		if (sections > 0 && !lda_section && !plugin_section) {
 			if (pop3_section) {
 				if (strcmp(key, "pop3_uidl_format") != 0)
 					continue;
@@ -439,10 +438,11 @@
 		}
 
 		if (lda_section) {
-			value = p_strconcat(plugin_pool,
-					    t_str_ucase(key), "=", value, NULL);
-			array_append(&lda_envs, &value, 1);
-		} else if (!plugin_section) {
+			str = p_strconcat(plugin_pool,
+					  t_str_ucase(key), "=", value, NULL);
+			array_append(&lda_envs, &str, 1);
+		}
+		if (!plugin_section) {
 			env_put(t_strconcat(t_str_ucase(key), "=",
 					    value, NULL));
 		} else {
@@ -708,7 +708,7 @@
 		var_expand(str, envs[i], table);
 		env_put(str_c(str));
 	}
-	/* add LDA envs last so that they can override plugin settings */
+	/* add LDA envs again to make sure they override plugin settings */
 	envs = array_get(&lda_envs, &count);
 	for (i = 0; i < count; i++)
 		env_put(envs[i]);