From: Timo Sirainen Date: Mon, 20 Feb 2017 17:35:45 +0000 (+0200) Subject: lib-storage: Add asserts to make sure lookup_abort is being used correctly. X-Git-Tag: 2.2.29.rc1~258 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a79136b95f2d9d4081b63fec606e4a6b271cd735;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Add asserts to make sure lookup_abort is being used correctly. --- diff --git a/src/lib-storage/index/index-search.c b/src/lib-storage/index/index-search.c index 70b377e7c8..9ffcc10d4b 100644 --- a/src/lib-storage/index/index-search.c +++ b/src/lib-storage/index/index-search.c @@ -1479,6 +1479,8 @@ static int search_match_next(struct index_search_context *ctx) 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 { diff --git a/src/lib-storage/index/index-sort.c b/src/lib-storage/index/index-sort.c index a7cae3b216..18951ff773 100644 --- a/src/lib-storage/index/index-sort.c +++ b/src/lib-storage/index/index-sort.c @@ -45,6 +45,7 @@ index_sort_program_set_mail_failed(struct mail_search_sort_program *program, 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 @@ index_sort_list_add_relevancy(struct mail_search_sort_program *program, 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 @@ void index_sort_list_add(struct mail_search_sort_program *program, 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,