Mercurial > dovecot > core-2.2
changeset 21650:5fb623020110
lib-storage: Add asserts to make sure lookup_abort is being used correctly.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Mon, 20 Feb 2017 19:35:45 +0200 |
parents | 78f38a28086e |
children | 79d9124f8c8b |
files | src/lib-storage/index/index-search.c src/lib-storage/index/index-sort.c |
diffstat | 2 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-search.c Mon Feb 20 19:34:25 2017 +0200 +++ b/src/lib-storage/index/index-search.c Mon Feb 20 19:35:45 2017 +0200 @@ -1479,6 +1479,8 @@ do a prefetch first and the final search later */ n--; } + + i_assert(ctx->cur_mail->lookup_abort == MAIL_LOOKUP_ABORT_NEVER); for (i = 0; i < n && ret < 0; i++) { ctx->cur_mail->lookup_abort = cache_lookups[i]; T_BEGIN {
--- a/src/lib-storage/index/index-sort.c Mon Feb 20 19:34:25 2017 +0200 +++ b/src/lib-storage/index/index-sort.c Mon Feb 20 19:35:45 2017 +0200 @@ -45,6 +45,7 @@ break; case MAIL_ERROR_LOOKUP_ABORTED: /* just change the error message */ + i_assert(program->slow_mails_left == 0); mail_storage_set_error(program->t->box->storage, MAIL_ERROR_LIMIT, "Requested sort would have taken too long."); /* fall through */ @@ -169,12 +170,14 @@ void index_sort_list_add(struct mail_search_sort_program *program, struct mail *mail) { - enum mail_lookup_abort orig_abort = mail->lookup_abort; enum mail_access_type orig_access_type = mail->access_type; bool prev_slow = mail->mail_stream_opened || mail->mail_metadata_accessed; i_assert(mail->transaction == program->t); + /* if lookup_abort isn't NEVER, mail_sort_max_read_count handling + doesn't work right. */ + i_assert(mail->lookup_abort == MAIL_LOOKUP_ABORT_NEVER); if (program->slow_mails_left == 0) mail->lookup_abort = MAIL_LOOKUP_ABORT_NOT_IN_CACHE; @@ -190,7 +193,7 @@ i_assert(program->slow_mails_left > 0); program->slow_mails_left--; } - mail->lookup_abort = orig_abort; + mail->lookup_abort = MAIL_LOOKUP_ABORT_NEVER; } static int sort_node_date_cmp(const struct mail_sort_node_date *n1,