virtual-mail.c revision d85a1a9d9af4a36ded4d30cb277905c807de2ec5
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/* Copyright (c) 2008-2015 Dovecot authors, see the included COPYING file */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor struct mailbox_header_lookup_ctx *wanted_headers;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* currently active mail */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* all allocated mails */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* mail is lost if backend_mail doesn't point to correct mail */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorvirtual_mail_alloc(struct mailbox_transaction_context *t,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor struct mailbox_header_lookup_ctx *wanted_headers)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor struct virtual_mailbox *mbox = (struct virtual_mailbox *)t->box;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor pool_alloconly_create("virtual index_mail", 512);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor array_create(&vmail->imail.mail.module_contexts, pool,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor sizeof(void *), 5);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor vmail->imail.ibox = INDEX_STORAGE_CONTEXT(t->box);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor i_array_init(&vmail->backend_mails, array_count(&mbox->backend_boxes));
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor struct virtual_mail *vmail = (struct virtual_mail *)mail;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor unsigned int i, count;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor mails = array_get_modifiable(&vmail->backend_mails, &count);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor for (i = 0; i < count; i++)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor mailbox_header_lookup_unref(&vmail->wanted_headers);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstatic struct mail *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorbackend_mail_find(struct virtual_mail *vmail, struct mailbox *box)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor unsigned int i, count;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor mails = array_get(&vmail->backend_mails, &count);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor for (i = 0; i < count; i++) {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstatic int backend_mail_get(struct virtual_mail *vmail,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor struct virtual_mailbox *mbox = (struct virtual_mailbox *)mail->box;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bbox = virtual_backend_box_lookup(mbox, vmail->cur_vrec.mailbox_id);
struct mail *
const void *data;
return FALSE;
return TRUE;
struct mail_private *p;
struct mail_private *p;
return TRUE;
struct mail_private *p;
struct mail_private *p;
int tz;
struct mail_private *p;
int ret;
if (ret < 0) {
return ret;
struct mail_private *p;
int ret;
if (ret < 0) {
int ret;
if (get_body) {
stream_r);
if (ret < 0) {
const char **value_r)
return NULL;
return NULL;
return real_mail;
NULL,