ctx->mail_ctx.args = args;
ctx->mail_ctx.sort_program = index_sort_program_init(t, sort_program);
- ctx->max_mails = t->box->storage->set->mail_prefetch_count + 1;
- if (ctx->max_mails == 0)
- ctx->max_mails = UINT_MAX;
+ ctx->mail_ctx.max_mails = t->box->storage->set->mail_prefetch_count + 1;
+ if (ctx->mail_ctx.max_mails == 0)
+ ctx->mail_ctx.max_mails = UINT_MAX;
ctx->next_time_check_cost = SEARCH_INITIAL_MAX_COST;
if (gettimeofday(&ctx->last_nonblock_timeval, NULL) < 0)
i_fatal("gettimeofday() failed: %m");
i_array_init(&ctx->mail_ctx.results, 5);
array_create(&ctx->mail_ctx.module_contexts, default_pool,
sizeof(void *), 5);
- i_array_init(&ctx->mails, ctx->max_mails);
+ i_array_init(&ctx->mail_ctx.mails, ctx->mail_ctx.max_mails);
mail_search_args_reset(ctx->mail_ctx.args->args, TRUE);
if (args->have_inthreads) {
array_free(&ctx->mail_ctx.results);
array_free(&ctx->mail_ctx.module_contexts);
- array_foreach_modifiable(&ctx->mails, mailp) {
+ array_foreach_modifiable(&ctx->mail_ctx.mails, mailp) {
struct index_mail *imail = INDEX_MAIL(*mailp);
imail->mail.search_mail = FALSE;
if (ctx->failed)
mail_storage_last_error_pop(ctx->box->storage);
- array_free(&ctx->mails);
+ array_free(&ctx->mail_ctx.mails);
i_free(ctx);
return ret;
}
}
/* avoid doing extra work for as long as possible */
- if (ctx->max_mails > 1) {
+ if (ctx->mail_ctx.max_mails > 1) {
/* we're doing prefetching. if we have to read the mail,
do a prefetch first and the final search later */
n--;
struct mail *const *mails, *mail;
unsigned int count;
- if (ctx->unused_mail_idx == ctx->max_mails)
+ if (ctx->mail_ctx.unused_mail_idx == ctx->mail_ctx.max_mails)
return NULL;
- mails = array_get(&ctx->mails, &count);
- if (ctx->unused_mail_idx < count)
- return mails[ctx->unused_mail_idx];
+ mails = array_get(&ctx->mail_ctx.mails, &count);
+ if (ctx->mail_ctx.unused_mail_idx < count)
+ return mails[ctx->mail_ctx.unused_mail_idx];
mail = mail_alloc(ctx->mail_ctx.transaction,
ctx->mail_ctx.wanted_fields,
imail->mail.search_mail = TRUE;
ctx->mail_ctx.transaction->stats_track = TRUE;
- array_push_back(&ctx->mails, &mail);
+ array_push_back(&ctx->mail_ctx.mails, &mail);
return mail;
}
if (ctx->mail_ctx.sort_program != NULL) {
/* don't prefetch when using a sort program,
since the mails' access order will change */
- i_assert(ctx->unused_mail_idx == 0);
+ i_assert(ctx->mail_ctx.unused_mail_idx == 0);
*mail_r = mail;
return 1;
}
- if (mail_prefetch(mail) && ctx->unused_mail_idx == 0) {
+ if (mail_prefetch(mail) && ctx->mail_ctx.unused_mail_idx == 0) {
/* no prefetching done, return it immediately */
*mail_r = mail;
return 1;
}
- ctx->unused_mail_idx++;
+ ctx->mail_ctx.unused_mail_idx++;
}
if (mail != NULL) {
return 0;
}
i_assert(ret < 0);
- if (ctx->unused_mail_idx == 0) {
+ if (ctx->mail_ctx.unused_mail_idx == 0) {
/* finished */
return -1;
}
}
/* return the next message */
- i_assert(ctx->unused_mail_idx > 0);
+ i_assert(ctx->mail_ctx.unused_mail_idx > 0);
- mails = array_get(&ctx->mails, &count);
+ mails = array_get(&ctx->mail_ctx.mails, &count);
*mail_r = mails[0];
- if (--ctx->unused_mail_idx > 0) {
- array_pop_front(&ctx->mails);
- array_push_back(&ctx->mails, mail_r);
+ if (--ctx->mail_ctx.unused_mail_idx > 0) {
+ array_pop_front(&ctx->mail_ctx.mails);
+ array_push_back(&ctx->mail_ctx.mails, mail_r);
}
index_mail_update_access_parts_post(*mail_r);
return 1;
if (!index_sort_list_next(_ctx->sort_program, &seq))
return FALSE;
- mailp = array_front(&ctx->mails);
+ mailp = array_front(&ctx->mail_ctx.mails);
mail_set_seq(*mailp, seq);
index_mail_update_access_parts_pre(*mailp);
index_mail_update_access_parts_post(*mailp);