]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
virtual: virtual-mail - Pass wanted_headers and wanted_fields to backend mails only
authorAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 16 Apr 2021 08:16:36 +0000 (11:16 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 16 Apr 2021 08:16:36 +0000 (11:16 +0300)
Broken in 67ab2070cf513179382b564871f2a0f177987cc9

src/plugins/virtual/virtual-mail.c

index 3c5bac383a0cf9260c431abf1f6c61611598b36d..f60267443696d958cf0f3bffdf72ce9b7b9720e9 100644 (file)
@@ -40,8 +40,14 @@ virtual_mail_alloc(struct mailbox_transaction_context *t,
        mail_pool = pool_alloconly_create("vmail", 1024);
        data_pool = pool_alloconly_create("virtual index_mail", 512);
        vmail = p_new(mail_pool, struct virtual_mail, 1);
-       index_mail_init(&vmail->imail, t, wanted_fields, wanted_headers,
-                       mail_pool, data_pool);
+       vmail->wanted_fields = wanted_fields;
+       vmail->wanted_headers = wanted_headers;
+       if (vmail->wanted_headers != NULL)
+               mailbox_header_lookup_ref(vmail->wanted_headers);
+       /* Do not pass wanted_fields or wanted_headers to index_mail_init.
+          It will just cause unwanted behaviour, as we only want these
+          to be passed to backend mails. */
+       index_mail_init(&vmail->imail, t, 0, NULL, mail_pool, data_pool);
        vmail->imail.mail.v = virtual_mail_vfuncs;
        i_array_init(&vmail->backend_mails, array_count(&mbox->backend_boxes));
        return &vmail->imail.mail.mail;