This patch fix a bug and remove some debug info from patch sent before.

2011/6/9 Antonio Perez-Aranda <aperezara...@yaco.es>:
> This patch is running but it only run with mail_plugins.
>
> This is because I can't select the "mail_plugins" value from any
> function to get this throw the name key.
>
> Maybe this need more hard development to do this as generic "property"
> for any config value.
>
> 2011/6/9 Antonio Perez-Aranda <aperezara...@yaco.es>:
>> Well, this "extrange" vaues is NULL.
>>
>> Maybe, the set_parser is a new environment to set settings but then
>> ¿when is make the config merge?
>>
>> 2011/6/9 Antonio Perez-Aranda <aperezara...@yaco.es>:
>>> This line:
>>>
>>> value = settings_parse_get_value(set_parser, key, &type);
>>>
>>> Is returning a empty value. Maybe, set_parser has been cleared?
>>>
>>> If I try to get another keys from my config that I can watch with
>>> doveadm I get "extrange" values like this with i_debug()
>>>
>>>  * mail_debug -> #001
>>>  * mail_location -> #010
>>>  * auth_realms -> #020#002
>>>
>>>
>>> 2011/6/8 Antonio Perez-Aranda <aperezara...@yaco.es>:
>>>> It must run on dovecot 2.0.13?
>>>>
>>>> We are upgrading to 2.0.13 and with this I get the follow message:
>>>>
>>>> Jun  8 16:15:03 kvm3 dovecot: imap: Debug: Unknown userdb setting:
>>>> +mail_plugins=fts fts_solr�G
>>>>
>>>>
>>>> 2011/6/7 Timo Sirainen <t...@iki.fi>:
>>>>> On Tue, 2011-06-07 at 16:16 +0200, Antonio Perez-Aranda wrote:
>>>>>> Greats, I'm working on patch from this morning, but it's very hard to
>>>>>> debug on settings-parser
>>>>>
>>>>> I don't think you should need to touch that code. It's a bit difficult
>>>>> for me also to follow..
>>>>>
>>>>>> How can I enable i_debug on settings-parser.c ?
>>>>>
>>>>> What do you mean? You could add i_debug() calls and it should work just
>>>>> the same as everywhere.
>>>>>
>>>>> Did you try the patch in my previous mail? I think that should be
>>>>> enough. You could then use:
>>>>>
>>>>> user_attrs = .., mailPlugins=+mail_plugins
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Antonio Pérez-Aranda Alcaide
>>>> aperezara...@yaco.es
>>>>
>>>> Yaco Sistemas S.L.
>>>> http://www.yaco.es/
>>>> C/ Rioja 5, 41001 Sevilla
>>>> Teléfono +34 954 50 00 57
>>>> Fax      +34 954 50 09 29
>>>>
>>>
>>>
>>>
>>> --
>>> Antonio Pérez-Aranda Alcaide
>>> aperezara...@yaco.es
>>>
>>> Yaco Sistemas S.L.
>>> http://www.yaco.es/
>>> C/ Rioja 5, 41001 Sevilla
>>> Teléfono +34 954 50 00 57
>>> Fax      +34 954 50 09 29
>>>
>>
>>
>>
>> --
>> Antonio Pérez-Aranda Alcaide
>> aperezara...@yaco.es
>>
>> Yaco Sistemas S.L.
>> http://www.yaco.es/
>> C/ Rioja 5, 41001 Sevilla
>> Teléfono +34 954 50 00 57
>> Fax      +34 954 50 09 29
>>
>
>
>
> --
> Antonio Pérez-Aranda Alcaide
> aperezara...@yaco.es
>
> Yaco Sistemas S.L.
> http://www.yaco.es/
> C/ Rioja 5, 41001 Sevilla
> Teléfono +34 954 50 00 57
> Fax      +34 954 50 09 29
>



-- 
Antonio Pérez-Aranda Alcaide
aperezara...@yaco.es

Yaco Sistemas S.L.
http://www.yaco.es/
C/ Rioja 5, 41001 Sevilla
Teléfono +34 954 50 00 57
Fax      +34 954 50 09 29
diff -r aa8dfa085a99 src/lib-storage/mail-storage-service.c
--- a/src/lib-storage/mail-storage-service.c	Wed May 11 17:59:56 2011 +0300
+++ b/src/lib-storage/mail-storage-service.c	Thu Jun 09 20:58:29 2011 +0400
@@ -107,14 +107,20 @@
 {
 	struct setting_parser_context *set_parser = user->set_parser;
 	bool mail_debug;
-	const char *key;
+	const char *key, *orig_key;
+	bool append = FALSE;
 	int ret;
 
 	mail_debug = mail_user_set_get_mail_debug(user->user_info,
 						  user->user_set);
 	if (strchr(line, '=') == NULL)
 		line = t_strconcat(line, "=yes", NULL);
-	key = t_strcut(line, '=');
+	orig_key = key = t_strcut(line, '=');
+	if (key[0] == '+') {
+		key++;
+                line++;
+		append = TRUE;
+	}
 
 	if (!settings_parse_is_valid_key(set_parser, key)) {
 		/* assume it's a plugin setting */
@@ -131,6 +137,20 @@
 		return 1;
 	}
 
+        if (append) {
+		if ((strcmp(key, "mail_plugins") == 0)) {
+			const void *value;
+        	        value = user->user_set->mail_plugins;
+			if (value != NULL){
+				line = t_strconcat(line, value, NULL);
+			}
+		}
+		else {
+			i_error("Ignoring %s userdb setting. "
+				"'+' can only be used for mail_plugins strings.", orig_key);
+		}
+	}
+
 	ret = settings_parse_line(set_parser, line);
 	if (mail_debug && ret >= 0) {
 		i_debug(ret == 0 ?

Reply via email to