Mercurial > dovecot > original-hg > dovecot-1.2
changeset 3999:f1e29736e60d HEAD
Don't register cache fields twice. Fixes "duplicate field in header" errors.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 08 Feb 2006 19:52:45 +0200 |
parents | 9d1bb677c5ca |
children | 421d844e884d |
files | src/lib-index/mail-cache-fields.c |
diffstat | 1 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-cache-fields.c Wed Feb 08 19:29:05 2006 +0200 +++ b/src/lib-index/mail-cache-fields.c Wed Feb 08 19:52:45 2006 +0200 @@ -17,7 +17,7 @@ { void *orig_key, *orig_value; unsigned int new_idx; - size_t i; + unsigned int i, j; new_idx = cache->fields_count; for (i = 0; i < fields_count; i++) { @@ -28,7 +28,17 @@ continue; } - fields[i].idx = new_idx++; + /* check if the same header is being registered in the + same field array */ + for (j = 0; j < i; j++) { + if (strcasecmp(fields[i].name, fields[j].name) == 0) { + fields[i].idx = fields[j].idx; + break; + } + } + + if (j == i) + fields[i].idx = new_idx++; } if (new_idx == cache->fields_count)