Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6346:5dcd55d1a47f HEAD
Complain about unknown extension introduction IDs in log only once per sync.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 02 Sep 2007 03:32:45 +0300 |
parents | 1829e8e32ddc |
children | aeaaaaeb64a6 |
files | src/lib-index/mail-index-sync-ext.c src/lib-index/mail-index-sync-private.h src/lib-index/mail-index-sync-update.c |
diffstat | 3 files changed, 24 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-index-sync-ext.c Sun Sep 02 03:13:19 2007 +0300 +++ b/src/lib-index/mail-index-sync-ext.c Sun Sep 02 03:32:45 2007 +0300 @@ -331,6 +331,25 @@ } } +static bool +mail_index_sync_ext_unknown_complain(struct mail_index_sync_map_ctx *ctx, + uint32_t ext_id) +{ + unsigned char *p; + + if (ctx->unknown_extensions == NULL) { + ctx->unknown_extensions = + buffer_create_dynamic(default_pool, ext_id + 8); + } + p = buffer_get_space_unsafe(ctx->unknown_extensions, ext_id, 1); + if (*p != 0) { + /* we've already complained once */ + return FALSE; + } + *p = 1; + return TRUE; +} + int mail_index_sync_ext_intro(struct mail_index_sync_map_ctx *ctx, const struct mail_transaction_ext_intro *u) { @@ -344,6 +363,8 @@ if (u->ext_id != (uint32_t)-1 && (!array_is_created(&map->extensions) || u->ext_id >= array_count(&map->extensions))) { + if (!mail_index_sync_ext_unknown_complain(ctx, u->ext_id)) + return -1; mail_index_sync_set_corrupted(ctx, "Extension introduction for unknown id %u", u->ext_id); return -1;
--- a/src/lib-index/mail-index-sync-private.h Sun Sep 02 03:13:19 2007 +0300 +++ b/src/lib-index/mail-index-sync-private.h Sun Sep 02 03:32:45 2007 +0300 @@ -31,6 +31,7 @@ ARRAY_DEFINE(expunge_handlers, struct mail_index_expunge_handler); ARRAY_DEFINE(extra_contexts, void *); + buffer_t *unknown_extensions; enum mail_index_sync_handler_type type;
--- a/src/lib-index/mail-index-sync-update.c Sun Sep 02 03:13:19 2007 +0300 +++ b/src/lib-index/mail-index-sync-update.c Sun Sep 02 03:32:45 2007 +0300 @@ -617,6 +617,8 @@ void mail_index_sync_map_deinit(struct mail_index_sync_map_ctx *sync_map_ctx) { + if (sync_map_ctx->unknown_extensions != NULL) + buffer_free(sync_map_ctx->unknown_extensions); if (sync_map_ctx->expunge_handlers_used) mail_index_sync_deinit_expunge_handlers(sync_map_ctx); mail_index_sync_deinit_handlers(sync_map_ctx);