mbox-mail.c revision 4b41116563110d00330896a568eff1078c382827
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen/* Copyright (C) 2003-2006 Timo Sirainen */
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainenstatic void mbox_prepare_resync(struct index_mail *mail)
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen (struct mbox_transaction_context *)mail->trans;
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen struct mbox_mailbox *mbox = (struct mbox_mailbox *)mail->ibox;
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainenstatic int mbox_mail_seek(struct index_mail *mail)
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen (struct mbox_transaction_context *)mail->trans;
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen struct mbox_mailbox *mbox = (struct mbox_mailbox *)mail->ibox;
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen if (mail->mail.mail.expunged || mbox->syncing)
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen /* refresh index file after mbox has been locked to
1d4f710106fb498750456724628da6063e012e6dTimo Sirainen make sure we get only up-to-date mbox offsets. */
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen if (mail_index_refresh(mbox->ibox.index) < 0) {
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen } else if ((sync_flags & MBOX_SYNC_FORCE_SYNC) != 0) {
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen /* dirty offsets are broken and mbox is write-locked.
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen sync it to update offsets. */
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen ret = mbox_file_seek(mbox, mail->trans->trans_view,
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen /* success */
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen /* we'll need to re-sync it completely */
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen sync_flags |= MBOX_SYNC_UNDIRTY | MBOX_SYNC_FORCE_SYNC;
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen mail_storage_set_critical(&mbox->storage->storage,
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen "Losing sync for mail uid=%u in mbox file %s",
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainenstatic time_t mbox_mail_get_received_date(struct mail *_mail)
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen struct index_mail *mail = (struct index_mail *)_mail;
9439bed2f07d6475febd8a247cd2f0990fb32a13Timo Sirainen struct mbox_mailbox *mbox = (struct mbox_mailbox *)mail->ibox;
1d4f710106fb498750456724628da6063e012e6dTimo Sirainen istream_raw_mbox_get_received_time(mbox->mbox_stream);
const char *value;
switch (field) {
case MAIL_FETCH_FROM_ENVELOPE:
return NULL;
case MAIL_FETCH_HEADER_MD5:
return value;
return NULL;
return NULL;