Mercurial > dovecot > core-2.2
changeset 10024:85e532d170cc HEAD
config: Conflict handling fix.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 09 Oct 2009 18:45:21 -0400 |
parents | f69fda5d7af5 |
children | 6556754b6c24 |
files | src/config/config-filter.c src/config/config-parser.c |
diffstat | 2 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/config/config-filter.c Fri Oct 09 17:55:57 2009 -0400 +++ b/src/config/config-filter.c Fri Oct 09 18:45:21 2009 -0400 @@ -132,9 +132,9 @@ { /* assume that both of the filters match the same subset, so we don't need to compare IPs and service name. */ - if (sup->local_bits < filter->local_bits) + if (sup->local_bits > filter->local_bits) return FALSE; - if (sup->remote_bits < filter->remote_bits) + if (sup->remote_bits > filter->remote_bits) return FALSE; if (sup->service != NULL && filter->service == NULL) return FALSE; @@ -185,8 +185,8 @@ /* apply the changes from rest of the matches */ for (i = 1; src[i] != NULL; i++) { - if (config_filter_is_superset(&src[i-1]->filter, - &src[i]->filter)) + if (config_filter_is_superset(&src[i]->filter, + &src[i-1]->filter)) error_p = NULL; else error_p = &error;
--- a/src/config/config-parser.c Fri Oct 09 17:55:57 2009 -0400 +++ b/src/config/config-parser.c Fri Oct 09 18:45:21 2009 -0400 @@ -166,9 +166,15 @@ parser = p_new(ctx->pool, struct config_filter_parser, 1); parser->filter = cur_section->filter; - parser->file_and_line = - p_strdup_printf(ctx->pool, "%s:%d", - ctx->cur_input->path, ctx->cur_input->linenum); + if (ctx->cur_input->linenum == 0) { + parser->file_and_line = + p_strdup(ctx->pool, ctx->cur_input->path); + } else { + parser->file_and_line = + p_strdup_printf(ctx->pool, "%s:%d", + ctx->cur_input->path, + ctx->cur_input->linenum); + } parser->parsers = cur_section->prev == NULL ? ctx->root_parsers : config_module_parsers_init(ctx->pool); array_append(&ctx->all_parsers, &parser, 1);