dovecot-2.2: dsync: Added DSYNC_BRAIN_FLAG_NO_NOTIFY to enable M...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Oct 20 12:29:16 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/f9a143c630a5
changeset: 19318:f9a143c630a5
user: Timo Sirainen <tss at iki.fi>
date: Tue Oct 20 15:29:07 2015 +0300
description:
dsync: Added DSYNC_BRAIN_FLAG_NO_NOTIFY to enable MAILBOX_TRANSACTION_FLAG_NO_NOTIFY
It's arguable that this should be enabled by default, but people might like
to keep mail_log notifications for dsync.
diffstat:
src/doveadm/dsync/dsync-brain-mailbox.c | 2 ++
src/doveadm/dsync/dsync-brain-private.h | 1 +
src/doveadm/dsync/dsync-brain.c | 1 +
src/doveadm/dsync/dsync-brain.h | 4 +++-
src/doveadm/dsync/dsync-ibc-stream.c | 6 +++++-
src/doveadm/dsync/dsync-mailbox-import.c | 10 +++++++---
src/doveadm/dsync/dsync-mailbox-import.h | 3 ++-
7 files changed, 21 insertions(+), 6 deletions(-)
diffs (136 lines):
diff -r 16ff395c156e -r f9a143c630a5 src/doveadm/dsync/dsync-brain-mailbox.c
--- a/src/doveadm/dsync/dsync-brain-mailbox.c Tue Oct 20 15:27:42 2015 +0300
+++ b/src/doveadm/dsync/dsync-brain-mailbox.c Tue Oct 20 15:29:07 2015 +0300
@@ -216,6 +216,8 @@
if (brain->local_dsync_box.have_only_guid128 ||
remote_dsync_box->have_only_guid128)
import_flags |= DSYNC_MAILBOX_IMPORT_FLAG_MAILS_USE_GUID128;
+ if (brain->no_notify)
+ import_flags |= DSYNC_MAILBOX_IMPORT_FLAG_NO_NOTIFY;
brain->box_importer = brain->backup_send ? NULL :
dsync_mailbox_import_init(brain->box, brain->virtual_all_box,
diff -r 16ff395c156e -r f9a143c630a5 src/doveadm/dsync/dsync-brain-private.h
--- a/src/doveadm/dsync/dsync-brain-private.h Tue Oct 20 15:27:42 2015 +0300
+++ b/src/doveadm/dsync/dsync-brain-private.h Tue Oct 20 15:29:07 2015 +0300
@@ -111,6 +111,7 @@
unsigned int changes_during_sync:1;
unsigned int require_full_resync:1;
unsigned int verbose_proctitle:1;
+ unsigned int no_notify:1;
unsigned int failed:1;
};
diff -r 16ff395c156e -r f9a143c630a5 src/doveadm/dsync/dsync-brain.c
--- a/src/doveadm/dsync/dsync-brain.c Tue Oct 20 15:27:42 2015 +0300
+++ b/src/doveadm/dsync/dsync-brain.c Tue Oct 20 15:29:07 2015 +0300
@@ -142,6 +142,7 @@
(flags & DSYNC_BRAIN_FLAG_NO_MAIL_PREFETCH) != 0;
brain->no_mailbox_renames =
(flags & DSYNC_BRAIN_FLAG_NO_MAILBOX_RENAMES) != 0;
+ brain->no_notify = (flags & DSYNC_BRAIN_FLAG_NO_NOTIFY) != 0;
}
static void
diff -r 16ff395c156e -r f9a143c630a5 src/doveadm/dsync/dsync-brain.h
--- a/src/doveadm/dsync/dsync-brain.h Tue Oct 20 15:27:42 2015 +0300
+++ b/src/doveadm/dsync/dsync-brain.h Tue Oct 20 15:29:07 2015 +0300
@@ -30,7 +30,9 @@
DSYNC_BRAIN_FLAG_NO_MAIL_PREFETCH = 0x100,
/* Disable mailbox renaming logic. This is just a kludge that should
be removed once the renaming logic has no more bugs.. */
- DSYNC_BRAIN_FLAG_NO_MAILBOX_RENAMES = 0x200
+ DSYNC_BRAIN_FLAG_NO_MAILBOX_RENAMES = 0x200,
+ /* Add MAILBOX_TRANSACTION_FLAG_NO_NOTIFY to transactions. */
+ DSYNC_BRAIN_FLAG_NO_NOTIFY = 0x400
};
enum dsync_brain_sync_type {
diff -r 16ff395c156e -r f9a143c630a5 src/doveadm/dsync/dsync-ibc-stream.c
--- a/src/doveadm/dsync/dsync-ibc-stream.c Tue Oct 20 15:27:42 2015 +0300
+++ b/src/doveadm/dsync/dsync-ibc-stream.c Tue Oct 20 15:29:07 2015 +0300
@@ -76,7 +76,7 @@
"debug sync_visible_namespaces exclude_mailboxes "
"send_mail_requests backup_send backup_recv lock_timeout "
"no_mail_sync no_mailbox_renames no_backup_overwrite purge_remote "
- "sync_since_timestamp sync_flags virtual_all_box"
+ "no_notify sync_since_timestamp sync_flags virtual_all_box"
},
{ .name = "mailbox_state",
.chr = 'S',
@@ -716,6 +716,8 @@
dsync_serializer_encode_add(encoder, "no_backup_overwrite", "");
if ((set->brain_flags & DSYNC_BRAIN_FLAG_PURGE_REMOTE) != 0)
dsync_serializer_encode_add(encoder, "purge_remote", "");
+ if ((set->brain_flags & DSYNC_BRAIN_FLAG_NO_NOTIFY) != 0)
+ dsync_serializer_encode_add(encoder, "no_notify", "");
dsync_serializer_encode_finish(&encoder, str);
dsync_ibc_stream_send_string(ibc, str);
@@ -822,6 +824,8 @@
set->brain_flags |= DSYNC_BRAIN_FLAG_NO_BACKUP_OVERWRITE;
if (dsync_deserializer_decode_try(decoder, "purge_remote", &value))
set->brain_flags |= DSYNC_BRAIN_FLAG_PURGE_REMOTE;
+ if (dsync_deserializer_decode_try(decoder, "no_notify", &value))
+ set->brain_flags |= DSYNC_BRAIN_FLAG_NO_NOTIFY;
*set_r = set;
return DSYNC_IBC_RECV_RET_OK;
diff -r 16ff395c156e -r f9a143c630a5 src/doveadm/dsync/dsync-mailbox-import.c
--- a/src/doveadm/dsync/dsync-mailbox-import.c Tue Oct 20 15:27:42 2015 +0300
+++ b/src/doveadm/dsync/dsync-mailbox-import.c Tue Oct 20 15:29:07 2015 +0300
@@ -62,6 +62,7 @@
uint32_t remote_first_recent_uid;
uint64_t remote_highest_modseq, remote_highest_pvt_modseq;
time_t sync_since_timestamp;
+ enum mailbox_transaction_flags transaction_flags;
enum mail_flags sync_flag;
const char *sync_keyword;
@@ -170,12 +171,12 @@
dsync_mailbox_import_transaction_begin(struct dsync_mailbox_importer *importer)
{
const enum mailbox_transaction_flags ext_trans_flags =
- MAILBOX_TRANSACTION_FLAG_SYNC |
+ importer->transaction_flags |
MAILBOX_TRANSACTION_FLAG_EXTERNAL |
MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS;
importer->trans = mailbox_transaction_begin(importer->box,
- MAILBOX_TRANSACTION_FLAG_SYNC);
+ importer->transaction_flags);
importer->ext_trans = mailbox_transaction_begin(importer->box,
ext_trans_flags);
importer->mail = mail_alloc(importer->trans, 0, NULL);
@@ -227,6 +228,9 @@
else
importer->sync_keyword = p_strdup(pool, sync_flag);
}
+ importer->transaction_flags = MAILBOX_TRANSACTION_FLAG_SYNC;
+ if ((flags & DSYNC_MAILBOX_IMPORT_FLAG_NO_NOTIFY) != 0)
+ importer->transaction_flags |= MAILBOX_TRANSACTION_FLAG_NO_NOTIFY;
hash_table_create(&importer->import_guids, pool, 0, str_hash, strcmp);
hash_table_create_direct(&importer->import_uids, pool, 0);
@@ -2023,7 +2027,7 @@
importer->virtual_trans =
mailbox_transaction_begin(importer->virtual_all_box,
- MAILBOX_TRANSACTION_FLAG_SYNC);
+ importer->transaction_flags);
search_ctx = mailbox_search_init(importer->virtual_trans, search_args,
NULL, MAIL_FETCH_GUID, NULL);
mail_search_args_unref(&search_args);
diff -r 16ff395c156e -r f9a143c630a5 src/doveadm/dsync/dsync-mailbox-import.h
--- a/src/doveadm/dsync/dsync-mailbox-import.h Tue Oct 20 15:27:42 2015 +0300
+++ b/src/doveadm/dsync/dsync-mailbox-import.h Tue Oct 20 15:29:07 2015 +0300
@@ -9,7 +9,8 @@
DSYNC_MAILBOX_IMPORT_FLAG_REVERT_LOCAL_CHANGES = 0x04,
DSYNC_MAILBOX_IMPORT_FLAG_DEBUG = 0x08,
DSYNC_MAILBOX_IMPORT_FLAG_MAILS_HAVE_GUIDS = 0x10,
- DSYNC_MAILBOX_IMPORT_FLAG_MAILS_USE_GUID128 = 0x20
+ DSYNC_MAILBOX_IMPORT_FLAG_MAILS_USE_GUID128 = 0x20,
+ DSYNC_MAILBOX_IMPORT_FLAG_NO_NOTIFY = 0x40
};
struct mailbox;
More information about the dovecot-cvs
mailing list