Mercurial > dovecot > core-2.2
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