~ubuntu-branches/ubuntu/trusty/dovecot/trusty-updates

« back to all changes in this revision

Viewing changes to src/lib-index/mail-index-transaction.c

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-01-08 09:35:49 UTC
  • mfrom: (1.15.3) (96.1.1 trusty-proposed)
  • Revision ID: package-import@ubuntu.com-20140108093549-814nkqdcxfbvgktg
Tags: 1:2.2.9-1ubuntu1
* Merge from Debian unstable, remaining changes:
  + Add mail-stack-delivery package:
    - Update d/rules
    - d/control: convert existing dovecot-postfix package to a dummy
      package and add new mail-stack-delivery package.
    - Update maintainer scripts.
    - Rename d/dovecot-postfix.* to debian/mail-stack-delivery.*
    - d/mail-stack-delivery.preinst: Move previously installed backups and
      config files to a new package namespace.
    - d/mail-stack-delivery.prerm: Added to handle downgrades.
  + Use Snakeoil SSL certificates by default:
    - d/control: Depend on ssl-cert.
    - d/dovecot-core.postinst: Relax grep for SSL_* a bit.
  + Add autopkgtest to debian/tests/*.
  + Add ufw integration:
    - d/dovecot-core.ufw.profile: new ufw profile.
    - d/rules: install profile in dovecot-core.
    - d/control: dovecot-core - suggest ufw.
  + d/dovecot-core.dirs: Added usr/share/doc/dovecot-core
  + Add apport hook:
    - d/rules, d/source_dovecot.py
  + Add upstart job:
    - d/rules, d/dovecot-core.dovecot.upstart, d/control,
      d/dovecot-core.dirs, dovecot-imapd.{postrm, postinst, prerm},
      d/dovecot-pop3d.{postinst, postrm, prerm}.
      d/mail-stack-deliver.postinst: Convert init script to upstart.
  + Use the autotools-dev dh addon to update config.guess/config.sub for
    arm64.
* Dropped changes, included in Debian:
  - Update Dovecot name to reflect distribution in login greeting.
  - Update Drac plugin for >= 2.0.0 support.
* d/control: Drop dovecot-postfix package as its no longer required.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (c) 2003-2012 Dovecot authors, see the included COPYING file */
 
1
/* Copyright (c) 2003-2013 Dovecot authors, see the included COPYING file */
2
2
 
3
3
#include "lib.h"
4
4
#include "ioloop.h"
97
97
{
98
98
        uint32_t uid, latest_seq;
99
99
 
 
100
        /* seq points to the transaction's primary view */
 
101
        mail_index_lookup_uid(t->view, seq, &uid);
 
102
 
 
103
        /* get the latest keywords from the updated index, or fallback to the
 
104
           primary view if the message is already expunged */
100
105
        if (t->latest_view == NULL) {
101
 
                (void)mail_index_refresh(t->view->index);
 
106
                mail_index_refresh(t->view->index);
102
107
                t->latest_view = mail_index_view_open(t->view->index);
103
108
        }
104
 
        mail_index_lookup_uid(t->view, seq, &uid);
105
 
        if (mail_index_lookup_seq(t->view, uid, &latest_seq))
106
 
                mail_index_lookup_keywords(t->view, latest_seq, keywords);
 
109
        if (mail_index_lookup_seq(t->latest_view, uid, &latest_seq))
 
110
                mail_index_lookup_keywords(t->latest_view, latest_seq, keywords);
 
111
        else
 
112
                mail_index_lookup_keywords(t->view, seq, keywords);
107
113
}
108
114
 
109
115
static int
140
146
                                   uoff_t *commit_size_r)
141
147
{
142
148
        struct mail_transaction_log *log = t->view->index->log;
143
 
        bool external = (t->flags & MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL) != 0;
144
149
        struct mail_transaction_log_append_ctx *ctx;
 
150
        enum mail_transaction_type trans_flags = 0;
145
151
        uint32_t log_seq1, log_seq2;
146
152
        uoff_t log_offset1, log_offset2;
147
153
        int ret;
148
154
 
149
 
        if (mail_transaction_log_append_begin(log->index, external, &ctx) < 0)
 
155
        if ((t->flags & MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL) != 0)
 
156
                trans_flags |= MAIL_TRANSACTION_EXTERNAL;
 
157
        if ((t->flags & MAIL_INDEX_TRANSACTION_FLAG_SYNC) != 0)
 
158
                trans_flags |= MAIL_TRANSACTION_SYNC;
 
159
 
 
160
        if (mail_transaction_log_append_begin(log->index, trans_flags, &ctx) < 0)
150
161
                return -1;
151
162
        ret = mail_transaction_log_file_refresh(t, ctx);
152
163
        if (ret > 0) T_BEGIN {
205
216
                   expunge handlers get run for the newly expunged messages
206
217
                   (and sync handlers that require HANDLER_FILE as well). */
207
218
                index->sync_commit_result = result_r;
208
 
                (void)mail_index_refresh(index);
 
219
                mail_index_refresh(index);
209
220
                index->sync_commit_result = NULL;
210
221
        }
211
222