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 ?