dovecot-2.2: dsync: Small code cleanup.
dovecot at dovecot.org
dovecot at dovecot.org
Sun May 26 21:20:53 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/2d6a3035a6f7
changeset: 16396:2d6a3035a6f7
user: Timo Sirainen <tss at iki.fi>
date: Sun May 26 21:20:47 2013 +0300
description:
dsync: Small code cleanup.
diffstat:
src/doveadm/dsync/doveadm-dsync.c | 21 ++++++++++++---------
src/doveadm/dsync/dsync-brain.c | 31 ++++++++++++++++---------------
src/doveadm/dsync/dsync-brain.h | 20 ++++++++++++++++----
3 files changed, 44 insertions(+), 28 deletions(-)
diffs (143 lines):
diff -r e0f7eb1c8e42 -r 2d6a3035a6f7 src/doveadm/dsync/doveadm-dsync.c
--- a/src/doveadm/dsync/doveadm-dsync.c Sun May 26 21:07:09 2013 +0300
+++ b/src/doveadm/dsync/doveadm-dsync.c Sun May 26 21:20:47 2013 +0300
@@ -486,16 +486,22 @@
struct dsync_cmd_context *ctx = (struct dsync_cmd_context *)_ctx;
struct dsync_ibc *ibc, *ibc2 = NULL;
struct dsync_brain *brain;
- struct mail_namespace *sync_ns = NULL;
+ struct dsync_brain_settings set;
enum dsync_brain_flags brain_flags;
bool remote_errors_logged = FALSE;
int status = 0, ret = 0;
+ memset(&set, 0, sizeof(set));
+ set.sync_box = ctx->mailbox;
+ memcpy(set.sync_box_guid, ctx->mailbox_guid, sizeof(set.sync_box_guid));
+ set.lock_timeout_secs = ctx->lock_timeout;
+ set.state = ctx->state_input;
+
user->dsyncing = TRUE;
if (ctx->namespace_prefix != NULL) {
- sync_ns = mail_namespace_find(user->namespaces,
- ctx->namespace_prefix);
+ set.sync_ns = mail_namespace_find(user->namespaces,
+ ctx->namespace_prefix);
}
if (ctx->run_type == DSYNC_RUN_TYPE_LOCAL)
@@ -524,12 +530,9 @@
brain_flags |= DSYNC_BRAIN_FLAG_NO_MAIL_SYNC;
if (doveadm_debug)
brain_flags |= DSYNC_BRAIN_FLAG_DEBUG;
- brain = dsync_brain_master_init(user, ibc, sync_ns, ctx->mailbox,
- ctx->mailbox_guid,
- ctx->sync_type, brain_flags,
- ctx->lock_timeout,
- ctx->state_input == NULL ? "" :
- ctx->state_input);
+
+ brain = dsync_brain_master_init(user, ibc, ctx->sync_type,
+ brain_flags, &set);
if (ctx->run_type == DSYNC_RUN_TYPE_LOCAL) {
if (cmd_dsync_run_local(ctx, user, brain, ibc2) < 0)
diff -r e0f7eb1c8e42 -r 2d6a3035a6f7 src/doveadm/dsync/dsync-brain.c
--- a/src/doveadm/dsync/dsync-brain.c Sun May 26 21:07:09 2013 +0300
+++ b/src/doveadm/dsync/dsync-brain.c Sun May 26 21:20:47 2013 +0300
@@ -86,32 +86,32 @@
struct dsync_brain *
dsync_brain_master_init(struct mail_user *user, struct dsync_ibc *ibc,
- struct mail_namespace *sync_ns, const char *sync_box,
- const guid_128_t sync_box_guid,
enum dsync_brain_sync_type sync_type,
- enum dsync_brain_flags flags, unsigned int lock_timeout,
- const char *state)
+ enum dsync_brain_flags flags,
+ const struct dsync_brain_settings *set)
{
struct dsync_ibc_settings ibc_set;
struct dsync_brain *brain;
const char *error;
i_assert(sync_type != DSYNC_BRAIN_SYNC_TYPE_UNKNOWN);
- i_assert(sync_type != DSYNC_BRAIN_SYNC_TYPE_STATE || *state != '\0');
+ i_assert(sync_type != DSYNC_BRAIN_SYNC_TYPE_STATE ||
+ (set->state != NULL && *set->state != '\0'));
brain = dsync_brain_common_init(user, ibc);
brain->sync_type = sync_type;
- if (sync_ns != NULL)
- brain->sync_ns = sync_ns;
- brain->sync_box = p_strdup(brain->pool, sync_box);
- memcpy(brain->sync_box_guid, sync_box_guid, sizeof(brain->sync_box_guid));
- brain->lock_timeout = lock_timeout;
+ if (set->sync_ns != NULL)
+ brain->sync_ns = set->sync_ns;
+ brain->sync_box = p_strdup(brain->pool, set->sync_box);
+ memcpy(brain->sync_box_guid, set->sync_box_guid,
+ sizeof(brain->sync_box_guid));
+ brain->lock_timeout = set->lock_timeout_secs;
brain->master_brain = TRUE;
dsync_brain_set_flags(brain, flags);
if (sync_type == DSYNC_BRAIN_SYNC_TYPE_STATE &&
dsync_mailbox_states_import(brain->mailbox_states,
- brain->pool, state, &error) < 0) {
+ brain->pool, set->state, &error) < 0) {
hash_table_clear(brain->mailbox_states, FALSE);
i_error("Saved sync state is invalid, "
"falling back to full sync: %s", error);
@@ -121,12 +121,13 @@
memset(&ibc_set, 0, sizeof(ibc_set));
ibc_set.hostname = my_hostdomain();
- ibc_set.sync_ns_prefix = sync_ns == NULL ? NULL : sync_ns->prefix;
- ibc_set.sync_box = sync_box;
- memcpy(ibc_set.sync_box_guid, sync_box_guid,
+ ibc_set.sync_ns_prefix = set->sync_ns == NULL ? NULL :
+ set->sync_ns->prefix;
+ ibc_set.sync_box = set->sync_box;
+ memcpy(ibc_set.sync_box_guid, set->sync_box_guid,
sizeof(ibc_set.sync_box_guid));
ibc_set.sync_type = sync_type;
- ibc_set.lock_timeout = lock_timeout;
+ ibc_set.lock_timeout = set->lock_timeout_secs;
/* reverse the backup direction for the slave */
ibc_set.brain_flags = flags & ~(DSYNC_BRAIN_FLAG_BACKUP_SEND |
DSYNC_BRAIN_FLAG_BACKUP_RECV);
diff -r e0f7eb1c8e42 -r 2d6a3035a6f7 src/doveadm/dsync/dsync-brain.h
--- a/src/doveadm/dsync/dsync-brain.h Sun May 26 21:07:09 2013 +0300
+++ b/src/doveadm/dsync/dsync-brain.h Sun May 26 21:20:47 2013 +0300
@@ -30,13 +30,25 @@
DSYNC_BRAIN_SYNC_TYPE_STATE
};
+struct dsync_brain_settings {
+ /* Sync only this namespace */
+ struct mail_namespace *sync_ns;
+ /* Sync only this mailbox name */
+ const char *sync_box;
+ /* Sync only this mailbox GUID */
+ guid_128_t sync_box_guid;
+
+ /* If non-zero, use dsync lock file for this user */
+ unsigned int lock_timeout_secs;
+ /* Input state for DSYNC_BRAIN_SYNC_TYPE_STATE */
+ const char *state;
+};
+
struct dsync_brain *
dsync_brain_master_init(struct mail_user *user, struct dsync_ibc *ibc,
- struct mail_namespace *sync_ns, const char *sync_box,
- const guid_128_t sync_box_guid,
enum dsync_brain_sync_type sync_type,
- enum dsync_brain_flags flags, unsigned int lock_timeout,
- const char *state);
+ enum dsync_brain_flags flags,
+ const struct dsync_brain_settings *set);
struct dsync_brain *
dsync_brain_slave_init(struct mail_user *user, struct dsync_ibc *ibc);
/* Returns 0 if everything was successful, -1 if syncing failed in some way */
More information about the dovecot-cvs
mailing list