Mercurial > dovecot > original-hg > dovecot-1.2
changeset 3300:23fceec1e5c9 HEAD
Some possible fix for HEADER searches and cleanup
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 17 Apr 2005 18:43:02 +0300 |
parents | 361ce931354e |
children | dd19f2e8575f |
files | src/lib-storage/mail-search.c |
diffstat | 1 files changed, 7 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/mail-search.c Sun Apr 17 18:42:14 2005 +0300 +++ b/src/lib-storage/mail-search.c Sun Apr 17 18:43:02 2005 +0300 @@ -106,7 +106,7 @@ static void search_arg_analyze(struct mail_search_arg *arg, buffer_t *headers, - int *have_headers, int *have_body, int *have_text) + int *have_body, int *have_text) { static const char *date_hdr = "Date"; struct mail_search_arg *subarg; @@ -121,8 +121,7 @@ while (subarg != NULL) { if (subarg->result == -1) { search_arg_analyze(subarg, headers, - have_headers, have_body, - have_text); + have_body, have_text); } subarg = subarg->next; @@ -131,21 +130,18 @@ case SEARCH_SENTBEFORE: case SEARCH_SENTON: case SEARCH_SENTSINCE: - *have_headers = TRUE; buffer_append(headers, &date_hdr, sizeof(const char *)); break; case SEARCH_HEADER: case SEARCH_HEADER_ADDRESS: buffer_append(headers, &arg->hdr_field_name, sizeof(const char *)); - *have_headers = TRUE; break; case SEARCH_BODY: *have_body = TRUE; break; case SEARCH_TEXT: *have_text = TRUE; - *have_headers = TRUE; *have_body = TRUE; break; default: @@ -164,12 +160,12 @@ *have_headers = *have_body = have_text = FALSE; headers = buffer_create_dynamic(pool_datastack_create(), 128); - for (; args != NULL; args = args->next) { - search_arg_analyze(args, headers, have_headers, - have_body, &have_text); - } + for (; args != NULL; args = args->next) + search_arg_analyze(args, headers, have_body, &have_text); - if (!have_headers || have_text) + *have_headers = have_text || headers->used != 0; + + if (headers->used == 0 || have_text) return NULL; buffer_append(headers, &null, sizeof(const char *));