changeset 16253:1a58d4bcb49c

dsync: -U parameter never updated replicator's full_sync state.
author Timo Sirainen <tss@iki.fi>
date Mon, 08 Apr 2013 15:33:23 +0300
parents 54cdc5b6727c
children e0acf38f6199
files src/doveadm/dsync/doveadm-dsync.c src/doveadm/dsync/dsync-brain.c src/doveadm/dsync/dsync-brain.h
diffstat 3 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/dsync/doveadm-dsync.c	Mon Apr 08 15:13:39 2013 +0300
+++ b/src/doveadm/dsync/doveadm-dsync.c	Mon Apr 08 15:33:23 2013 +0300
@@ -443,7 +443,9 @@
 }
 
 static void
-dsync_replicator_notify(struct dsync_cmd_context *ctx, const char *state_str)
+dsync_replicator_notify(struct dsync_cmd_context *ctx,
+			enum dsync_brain_sync_type sync_type,
+			const char *state_str)
 {
 #define REPLICATOR_HANDSHAKE "VERSION\treplicator-doveadm-client\t1\t0\n"
 	const char *path;
@@ -465,7 +467,7 @@
 	str_append(str, REPLICATOR_HANDSHAKE"NOTIFY\t");
 	str_append_tabescaped(str, ctx->ctx.cur_mail_user->username);
 	str_append_c(str, '\t');
-	if (ctx->sync_type == DSYNC_BRAIN_SYNC_TYPE_FULL)
+	if (sync_type == DSYNC_BRAIN_SYNC_TYPE_FULL)
 		str_append_c(str, 'f');
 	str_append_c(str, '\t');
 	str_append_tabescaped(str, state_str);
@@ -910,6 +912,7 @@
 	struct dsync_ibc *ibc;
 	struct dsync_brain *brain;
 	string_t *temp_prefix, *state_str = NULL;
+	enum dsync_brain_sync_type sync_type;
 
 	if (_ctx->conn != NULL) {
 		/* doveadm-server connection. start with a success reply.
@@ -937,6 +940,7 @@
 		state_str = t_str_new(128);
 		dsync_brain_get_state(brain, state_str);
 	}
+	sync_type = dsync_brain_get_sync_type(brain);
 
 	if (dsync_brain_deinit(&brain) < 0)
 		_ctx->exit_code = EX_TEMPFAIL;
@@ -949,7 +953,7 @@
 	}
 
 	if (ctx->replicator_notify)
-		dsync_replicator_notify(ctx, str_c(state_str));
+		dsync_replicator_notify(ctx, sync_type, str_c(state_str));
 	return _ctx->exit_code == 0 ? 0 : -1;
 }
 
--- a/src/doveadm/dsync/dsync-brain.c	Mon Apr 08 15:13:39 2013 +0300
+++ b/src/doveadm/dsync/dsync-brain.c	Mon Apr 08 15:33:23 2013 +0300
@@ -498,6 +498,11 @@
 	dsync_mailbox_states_export(brain->mailbox_states, output);
 }
 
+enum dsync_brain_sync_type dsync_brain_get_sync_type(struct dsync_brain *brain)
+{
+	return brain->sync_type;
+}
+
 bool dsync_brain_has_failed(struct dsync_brain *brain)
 {
 	return brain->failed;
--- a/src/doveadm/dsync/dsync-brain.h	Mon Apr 08 15:13:39 2013 +0300
+++ b/src/doveadm/dsync/dsync-brain.h	Mon Apr 08 15:33:23 2013 +0300
@@ -50,5 +50,7 @@
 /* Returns the current sync state string, which can be given as parameter to
    dsync_brain_master_init() to quickly sync only the new changes. */
 void dsync_brain_get_state(struct dsync_brain *brain, string_t *output);
+/* Returns the sync type that was used. Mainly useful with slave brain. */
+enum dsync_brain_sync_type dsync_brain_get_sync_type(struct dsync_brain *brain);
 
 #endif