]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
virtual: Fix mail.add_temp_wanted_fields() to handle headers correctly
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 27 Apr 2018 10:56:13 +0000 (13:56 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 May 2019 06:43:19 +0000 (06:43 +0000)
The header that was passed to backend contained wrong index numbers, causing
wrong headers to be used.

src/plugins/virtual/virtual-mail.c

index 43b7b86d43e33b80c31da507ef89df5b2632f143..d84a6b49b8d650efe0916de2cf2ff5d4e5c7a97e 100644 (file)
@@ -258,12 +258,15 @@ virtual_mail_add_temp_wanted_fields(struct mail *mail,
 {
        struct virtual_mail *vmail = (struct virtual_mail *)mail;
        struct mail *backend_mail;
-       struct mail_private *p;
+       struct mailbox_header_lookup_ctx *backend_headers;
 
        if (backend_mail_get(vmail, &backend_mail) < 0)
                return;
-       p = (struct mail_private *)backend_mail;
-       p->v.add_temp_wanted_fields(backend_mail, fields, headers);
+       /* convert header indexes to backend mailbox's header indexes */
+       backend_headers = headers == NULL ? NULL :
+               mailbox_header_lookup_init(backend_mail->box, headers->name);
+       mail_add_temp_wanted_fields(backend_mail, fields, backend_headers);
+       mailbox_header_lookup_unref(&backend_headers);
 }
 
 static int