pool = pool_alloconly_create("mail", 2048);
mail = p_new(pool, struct dbox_mail, 1);
- mail->imail.mail.pool = pool;
- index_mail_init(&mail->imail, t, wanted_fields, wanted_headers);
+ index_mail_init(&mail->imail, t, wanted_fields, wanted_headers, pool, NULL);
return &mail->imail.mail.mail;
}
pool = pool_alloconly_create("mail", 2048);
mail = p_new(pool, struct imapc_mail, 1);
- mail->imail.mail.pool = pool;
mail->fd = -1;
- index_mail_init(&mail->imail, t, wanted_fields, wanted_headers);
+ index_mail_init(&mail->imail, t, wanted_fields, wanted_headers, pool, NULL);
return &mail->imail.mail.mail;
}
pool = pool_alloconly_create("mail", 2048);
mail = p_new(pool, struct index_mail, 1);
- mail->mail.pool = pool;
- index_mail_init(mail, t, wanted_fields, wanted_headers);
+ index_mail_init(mail, t, wanted_fields, wanted_headers, pool, NULL);
return &mail->mail.mail;
}
void index_mail_init(struct index_mail *mail,
struct mailbox_transaction_context *t,
enum mail_fetch_field wanted_fields,
- struct mailbox_header_lookup_ctx *wanted_headers)
+ struct mailbox_header_lookup_ctx *wanted_headers,
+ struct pool *mail_pool,
+ struct pool *data_pool)
{
+ mail->mail.pool = mail_pool;
array_create(&mail->mail.module_contexts, mail->mail.pool,
sizeof(void *), 5);
mail->mail.mail.transaction = t;
index_mail_init_event(&mail->mail.mail);
t->mail_ref_count++;
- mail->mail.data_pool = pool_alloconly_create("index_mail", 16384);
+ if (data_pool != NULL)
+ mail->mail.data_pool = data_pool;
+ else
+ mail->mail.data_pool = pool_alloconly_create("index_mail", 16384);
mail->ibox = INDEX_STORAGE_CONTEXT(t->box);
mail->mail.wanted_fields = wanted_fields;
if (wanted_headers != NULL) {
void index_mail_init(struct index_mail *mail,
struct mailbox_transaction_context *_t,
enum mail_fetch_field wanted_fields,
- struct mailbox_header_lookup_ctx *_wanted_headers);
+ struct mailbox_header_lookup_ctx *_wanted_headers,
+ struct pool *mail_pool,
+ struct pool *data_pool);
void index_mail_set_seq(struct mail *mail, uint32_t seq, bool saving);
bool index_mail_set_uid(struct mail *mail, uint32_t uid);
pool = pool_alloconly_create("mail", 2048);
mail = p_new(pool, struct pop3c_mail, 1);
- mail->imail.mail.pool = pool;
- index_mail_init(&mail->imail, t, wanted_fields, wanted_headers);
+ index_mail_init(&mail->imail, t, wanted_fields, wanted_headers, pool, NULL);
return &mail->imail.mail.mail;
}