Mercurial > dovecot > original-hg > dovecot-2.0
changeset 13078:a3002de95797
lib-storage: Don't access mail->box->view, but mail->transaction->view.
They may not be the same. In such cases e.g. mail_set_uid() may have
accessed a wrong mail.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 22 Mar 2012 18:07:41 +0200 |
parents | 2fb267a8077a |
children | ff1364d4d528 |
files | src/lib-storage/index/index-mail.c src/plugins/virtual/virtual-mail.c |
diffstat | 2 files changed, 6 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-mail.c Wed Mar 21 13:43:56 2012 +0200 +++ b/src/lib-storage/index/index-mail.c Thu Mar 22 18:07:41 2012 +0200 @@ -1332,7 +1332,7 @@ /* open the stream only if we didn't get here from mailbox_save_init() */ - hdr = mail_index_get_header(_mail->box->view); + hdr = mail_index_get_header(_mail->transaction->view); if (!_mail->saving && _mail->uid < hdr->next_uid) (void)mail_get_stream(_mail, NULL, NULL, &input); } @@ -1343,7 +1343,7 @@ struct index_mail *mail = (struct index_mail *)_mail; uint32_t seq; - if (mail_index_lookup_seq(_mail->box->view, uid, &seq)) { + if (mail_index_lookup_seq(_mail->transaction->view, uid, &seq)) { index_mail_set_seq(_mail, seq); return TRUE; } else {
--- a/src/plugins/virtual/virtual-mail.c Wed Mar 21 13:43:56 2012 +0200 +++ b/src/plugins/virtual/virtual-mail.c Thu Mar 22 18:07:41 2012 +0200 @@ -116,8 +116,8 @@ const void *data; bool expunged; - mail_index_lookup_ext(mail->box->view, seq, mbox->virtual_ext_id, - &data, &expunged); + mail_index_lookup_ext(mail->transaction->view, seq, + mbox->virtual_ext_id, &data, &expunged); vrec = data; bbox = virtual_backend_box_lookup(mbox, vrec->mailbox_id); @@ -130,7 +130,7 @@ vmail->imail.data.seq = seq; mail->seq = seq; - mail_index_lookup_uid(mail->box->view, seq, &mail->uid); + mail_index_lookup_uid(mail->transaction->view, seq, &mail->uid); if (!vmail->lost) { mail->expunged = vmail->backend_mail->expunged; @@ -147,7 +147,7 @@ { uint32_t seq; - if (!mail_index_lookup_seq(mail->box->view, uid, &seq)) + if (!mail_index_lookup_seq(mail->transaction->view, uid, &seq)) return FALSE; virtual_mail_set_seq(mail, seq);