dovecot-2.1: Merged dsync into "doveadm dsync".
dovecot at dovecot.org
dovecot at dovecot.org
Thu Dec 29 14:47:20 EET 2011
details: http://hg.dovecot.org/dovecot-2.1/rev/4c827134997f
changeset: 13875:4c827134997f
user: Timo Sirainen <tss at iki.fi>
date: Thu Dec 29 14:43:45 2011 +0200
description:
Merged dsync into "doveadm dsync".
dsync symlink is installed for backwards compatibility.
diffstat:
.hgignore | 1 -
configure.in | 2 +-
src/Makefile.am | 1 -
src/doveadm/Makefile.am | 7 +
src/doveadm/client-connection.c | 17 +-
src/doveadm/doveadm-mail.c | 68 +-
src/doveadm/doveadm-mail.h | 15 +-
src/doveadm/doveadm-settings.c | 2 +
src/doveadm/doveadm-settings.h | 1 +
src/doveadm/doveadm.c | 3 +
src/doveadm/dsync/Makefile.am | 80 +
src/doveadm/dsync/doveadm-dsync.c | 494 +++++
src/doveadm/dsync/doveadm-dsync.h | 10 +
src/doveadm/dsync/dsync-brain-msgs-new.c | 392 ++++
src/doveadm/dsync/dsync-brain-msgs.c | 537 ++++++
src/doveadm/dsync/dsync-brain-private.h | 144 +
src/doveadm/dsync/dsync-brain.c | 917 +++++++++++
src/doveadm/dsync/dsync-brain.h | 28 +
src/doveadm/dsync/dsync-data.c | 146 +
src/doveadm/dsync/dsync-data.h | 84 +
src/doveadm/dsync/dsync-proxy-client.c | 1191 ++++++++++++++
src/doveadm/dsync/dsync-proxy-server-cmd.c | 608 +++++++
src/doveadm/dsync/dsync-proxy-server.c | 205 ++
src/doveadm/dsync/dsync-proxy-server.h | 46 +
src/doveadm/dsync/dsync-proxy.c | 412 ++++
src/doveadm/dsync/dsync-proxy.h | 55 +
src/doveadm/dsync/dsync-worker-local.c | 1899 +++++++++++++++++++++++
src/doveadm/dsync/dsync-worker-private.h | 105 +
src/doveadm/dsync/dsync-worker.c | 285 +++
src/doveadm/dsync/dsync-worker.h | 164 +
src/doveadm/dsync/test-dsync-brain-msgs.c | 670 ++++++++
src/doveadm/dsync/test-dsync-brain.c | 289 +++
src/doveadm/dsync/test-dsync-common.c | 80 +
src/doveadm/dsync/test-dsync-common.h | 18 +
src/doveadm/dsync/test-dsync-proxy-server-cmd.c | 482 +++++
src/doveadm/dsync/test-dsync-proxy.c | 184 ++
src/doveadm/dsync/test-dsync-worker.c | 481 +++++
src/doveadm/dsync/test-dsync-worker.h | 96 +
src/dsync/Makefile.am | 88 -
src/dsync/dsync-brain-msgs-new.c | 392 ----
src/dsync/dsync-brain-msgs.c | 537 ------
src/dsync/dsync-brain-private.h | 144 -
src/dsync/dsync-brain.c | 918 -----------
src/dsync/dsync-brain.h | 28 -
src/dsync/dsync-data.c | 146 -
src/dsync/dsync-data.h | 84 -
src/dsync/dsync-proxy-client.c | 1192 --------------
src/dsync/dsync-proxy-server-cmd.c | 609 -------
src/dsync/dsync-proxy-server.c | 206 --
src/dsync/dsync-proxy-server.h | 46 -
src/dsync/dsync-proxy.c | 412 ----
src/dsync/dsync-proxy.h | 55 -
src/dsync/dsync-worker-local.c | 1895 ----------------------
src/dsync/dsync-worker-private.h | 105 -
src/dsync/dsync-worker.c | 285 ---
src/dsync/dsync-worker.h | 164 -
src/dsync/dsync.c | 364 ----
src/dsync/test-dsync-brain-msgs.c | 670 --------
src/dsync/test-dsync-brain.c | 294 ---
src/dsync/test-dsync-common.c | 80 -
src/dsync/test-dsync-common.h | 18 -
src/dsync/test-dsync-proxy-server-cmd.c | 485 -----
src/dsync/test-dsync-proxy.c | 184 --
src/dsync/test-dsync-worker.c | 481 -----
src/dsync/test-dsync-worker.h | 96 -
65 files changed, 10173 insertions(+), 10024 deletions(-)
diffs (truncated from 20702 to 300 lines):
diff -r 3c7e01a5c7b7 -r 4c827134997f .hgignore
--- a/.hgignore Thu Dec 29 11:19:52 2011 +0200
+++ b/.hgignore Thu Dec 29 14:43:45 2011 +0200
@@ -66,7 +66,6 @@
src/dns/dns-client
src/doveadm/doveadm
src/doveadm/doveadm-server
-src/dsync/dsync
src/imap-login/imap-login
src/imap/imap
src/indexer/indexer
diff -r 3c7e01a5c7b7 -r 4c827134997f configure.in
--- a/configure.in Thu Dec 29 11:19:52 2011 +0200
+++ b/configure.in Thu Dec 29 14:43:45 2011 +0200
@@ -2750,7 +2750,7 @@
src/auth/Makefile
src/config/Makefile
src/doveadm/Makefile
-src/dsync/Makefile
+src/doveadm/dsync/Makefile
src/lda/Makefile
src/log/Makefile
src/lmtp/Makefile
diff -r 3c7e01a5c7b7 -r 4c827134997f src/Makefile.am
--- a/src/Makefile.am Thu Dec 29 11:19:52 2011 +0200
+++ b/src/Makefile.am Thu Dec 29 14:43:45 2011 +0200
@@ -41,7 +41,6 @@
director \
util \
doveadm \
- dsync \
ssl-params \
stats \
plugins
diff -r 3c7e01a5c7b7 -r 4c827134997f src/doveadm/Makefile.am
--- a/src/doveadm/Makefile.am Thu Dec 29 11:19:52 2011 +0200
+++ b/src/doveadm/Makefile.am Thu Dec 29 14:43:45 2011 +0200
@@ -1,6 +1,8 @@
doveadm_moduledir = $(moduledir)/doveadm
pkglibexecdir = $(libexecdir)/dovecot
+SUBDIRS = dsync
+
bin_PROGRAMS = doveadm
pkglibexec_PROGRAMS = doveadm-server
@@ -35,6 +37,7 @@
../lib-otp/libotp.a
libs = \
+ dsync/libdsync.a \
$(LIBDOVECOT_STORAGE) \
$(unused_objects)
@@ -122,3 +125,7 @@
doveadm-settings.h \
doveadm-util.h \
doveadm-who.h
+
+install-exec-local:
+ rm -f $(DESTDIR)$(bindir)/dsync
+ $(LN_S) doveadm $(DESTDIR)$(bindir)/dsync
diff -r 3c7e01a5c7b7 -r 4c827134997f src/doveadm/client-connection.c
--- a/src/doveadm/client-connection.c Thu Dec 29 11:19:52 2011 +0200
+++ b/src/doveadm/client-connection.c Thu Dec 29 14:43:45 2011 +0200
@@ -41,9 +41,6 @@
const struct mail_storage_service_input *input,
int argc, char *argv[])
{
- enum mail_storage_service_flags service_flags =
- MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT |
- MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
struct doveadm_mail_cmd_context *ctx;
const struct doveadm_mail_cmd *cmd;
const char *getopt_args;
@@ -56,12 +53,15 @@
return FALSE;
}
- if (doveadm_debug)
- service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
-
ctx = doveadm_mail_cmd_init(cmd, set);
ctx->full_args = (const void *)(argv + 1);
+ ctx->service_flags |=
+ MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT |
+ MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
+ if (doveadm_debug)
+ ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
+
getopt_args = t_strconcat("AS:u:", ctx->getopt_args, NULL);
while ((c = getopt(argc, argv, getopt_args)) > 0) {
switch (c) {
@@ -106,7 +106,10 @@
}
ctx->args = (const void *)argv;
- doveadm_mail_single_user(ctx, input, service_flags);
+ if (ctx->v.preinit != NULL)
+ ctx->v.preinit(ctx);
+
+ doveadm_mail_single_user(ctx, input);
doveadm_mail_server_flush();
ctx->v.deinit(ctx);
doveadm_print_flush();
diff -r 3c7e01a5c7b7 -r 4c827134997f src/doveadm/doveadm-mail.c
--- a/src/doveadm/doveadm-mail.c Thu Dec 29 11:19:52 2011 +0200
+++ b/src/doveadm/doveadm-mail.c Thu Dec 29 14:43:45 2011 +0200
@@ -19,6 +19,7 @@
#include "doveadm.h"
#include "doveadm-settings.h"
#include "doveadm-print.h"
+#include "dsync/doveadm-dsync.h"
#include "doveadm-mail.h"
#include <stdio.h>
@@ -186,7 +187,6 @@
const struct mail_storage_service_input *input,
const char **error_r)
{
- struct mail_storage_service_user *service_user;
const char *error;
int ret;
@@ -199,7 +199,7 @@
return ret;
ret = mail_storage_service_lookup(ctx->storage_service, input,
- &service_user, &error);
+ &ctx->cur_service_user, &error);
if (ret <= 0) {
if (ret < 0) {
*error_r = t_strdup_printf("User lookup failed: %s",
@@ -208,31 +208,32 @@
return ret;
}
- ret = mail_storage_service_next(ctx->storage_service, service_user,
+ ret = mail_storage_service_next(ctx->storage_service,
+ ctx->cur_service_user,
&ctx->cur_mail_user);
if (ret < 0) {
*error_r = "User init failed";
- mail_storage_service_user_free(&service_user);
+ mail_storage_service_user_free(&ctx->cur_service_user);
return ret;
}
ctx->v.run(ctx, ctx->cur_mail_user);
mail_user_unref(&ctx->cur_mail_user);
- mail_storage_service_user_free(&service_user);
+ mail_storage_service_user_free(&ctx->cur_service_user);
return 1;
}
void doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,
- const struct mail_storage_service_input *input,
- enum mail_storage_service_flags service_flags)
+ const struct mail_storage_service_input *input)
{
const char *error;
int ret;
i_assert(input->username != NULL);
+ ctx->cur_username = input->username;
ctx->storage_service = mail_storage_service_init(master_service, NULL,
- service_flags);
+ ctx->service_flags);
ctx->v.init(ctx, ctx->args);
if (hook_doveadm_mail_init != NULL)
hook_doveadm_mail_init(ctx);
@@ -251,21 +252,20 @@
static void
doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx, char *argv[],
- const char *wildcard_user,
- enum mail_storage_service_flags service_flags)
+ const char *wildcard_user)
{
struct mail_storage_service_input input;
unsigned int user_idx, user_count, interval, n;
const char *user, *error;
int ret;
- service_flags |= MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
+ ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
memset(&input, 0, sizeof(input));
input.service = "doveadm";
ctx->storage_service = mail_storage_service_init(master_service, NULL,
- service_flags);
+ ctx->service_flags);
lib_signals_set_handler(SIGINT, 0, sig_die, NULL);
lib_signals_set_handler(SIGTERM, 0, sig_die, NULL);
@@ -355,20 +355,19 @@
static void
doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[])
{
- enum mail_storage_service_flags service_flags =
- MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT;
struct doveadm_mail_cmd_context *ctx;
- const char *getopt_args, *username, *wildcard_user;
+ const char *getopt_args, *wildcard_user;
int c;
- if (doveadm_debug)
- service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
-
ctx = doveadm_mail_cmd_init(cmd, doveadm_settings);
ctx->full_args = (const void *)(argv + 1);
+ ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT;
+ if (doveadm_debug)
+ ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
+
getopt_args = t_strconcat("AS:u:", ctx->getopt_args, NULL);
- username = getenv("USER");
+ ctx->cur_username = getenv("USER");
wildcard_user = NULL;
while ((c = getopt(argc, argv, getopt_args)) > 0) {
switch (c) {
@@ -381,12 +380,14 @@
doveadm_settings->doveadm_worker_count = 1;
break;
case 'u':
- service_flags |=
+ ctx->service_flags |=
MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
- username = optarg;
- if (strchr(username, '*') != NULL ||
- strchr(username, '?') != NULL)
- wildcard_user = username;
+ ctx->cur_username = optarg;
+ if (strchr(ctx->cur_username, '*') != NULL ||
+ strchr(ctx->cur_username, '?') != NULL) {
+ wildcard_user = ctx->cur_username;
+ ctx->cur_username = NULL;
+ }
break;
default:
if (ctx->v.parse_arg == NULL ||
@@ -400,6 +401,8 @@
cmd->name, argv[0]);
}
ctx->args = (const void *)argv;
+ if (ctx->v.preinit != NULL)
+ ctx->v.preinit(ctx);
ctx->iterate_single_user =
!ctx->iterate_all_users && wildcard_user == NULL;
@@ -412,16 +415,16 @@
if (ctx->iterate_single_user) {
struct mail_storage_service_input input;
- if (username == NULL)
+ if (ctx->cur_username == NULL)
i_fatal("USER environment is missing and -u option not used");
memset(&input, 0, sizeof(input));
input.service = "doveadm";
- input.username = username;
- doveadm_mail_single_user(ctx, &input, service_flags);
+ input.username = ctx->cur_username;
+ doveadm_mail_single_user(ctx, &input);
} else {
- service_flags |= MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP;
- doveadm_mail_all_users(ctx, argv, wildcard_user, service_flags);
+ ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP;
+ doveadm_mail_all_users(ctx, argv, wildcard_user);
}
if (ctx->search_args != NULL)
mail_search_args_unref(&ctx->search_args);
@@ -432,6 +435,8 @@
/* service deinit unloads mail plugins, so do it late */
mail_storage_service_deinit(&ctx->storage_service);
+ if (ctx->exit_code != 0)
+ exit(ctx->exit_code);
if (ctx->failed)
exit(FATAL_DEFAULT);
pool_unref(&ctx->pool);
@@ -579,7 +584,10 @@
&cmd_mailbox_rename,
&cmd_mailbox_subscribe,
&cmd_mailbox_unsubscribe,
- &cmd_mailbox_status
+ &cmd_mailbox_status,
+ &cmd_dsync_backup,
+ &cmd_dsync_mirror,
+ &cmd_dsync_server
};
void doveadm_mail_init(void)
diff -r 3c7e01a5c7b7 -r 4c827134997f src/doveadm/doveadm-mail.h
--- a/src/doveadm/doveadm-mail.h Thu Dec 29 11:19:52 2011 +0200
+++ b/src/doveadm/doveadm-mail.h Thu Dec 29 14:43:45 2011 +0200
More information about the dovecot-cvs
mailing list