changeset 14276:9c6eeeb810c0

dsync server: Ignore -f, -R and -m parameters instead of failing. v2.0 dsync did this as well.
author Timo Sirainen <tss@iki.fi>
date Sun, 04 Mar 2012 13:01:09 +0200
parents 5a62b55914c4
children 8cbc130c2b72
files src/doveadm/dsync/doveadm-dsync.c
diffstat 1 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/dsync/doveadm-dsync.c	Sun Mar 04 12:50:02 2012 +0200
+++ b/src/doveadm/dsync/doveadm-dsync.c	Sun Mar 04 13:01:09 2012 +0200
@@ -644,6 +644,7 @@
 	char *p, *dup, new_flags[6];
 	int max_argc, src, dest, i, j;
 	bool flag_f = FALSE, flag_R = FALSE, flag_m, flag_u, flag_C, has_arg;
+	bool dsync_server = FALSE;
 
 	p = strrchr(argv[0], '/');
 	if (p == NULL) p = argv[0];
@@ -732,9 +733,10 @@
 		new_argv[dest] = "sync";
 	else if (strcmp(argv[src], "backup") == 0)
 		new_argv[dest] = "backup";
-	else if (strcmp(argv[src], "server") == 0)
+	else if (strcmp(argv[src], "server") == 0) {
 		new_argv[dest] = "dsync-server";
-	else
+		dsync_server = TRUE;
+	} else
 		i_fatal("Invalid parameter: %s", argv[src]);
 	src++; dest++;
 
@@ -746,12 +748,14 @@
 	/* dsync flags */
 	new_flags[0] = '-';
 	new_flags[1] = 'E'; i = 2;
-	if (flag_f)
-		new_flags[i++] = 'f';
-	if (flag_R)
-		new_flags[i++] = 'R';
-	if (mailbox != NULL)
-		new_flags[i++] = 'm';
+	if (!dsync_server) {
+		if (flag_f)
+			new_flags[i++] = 'f';
+		if (flag_R)
+			new_flags[i++] = 'R';
+		if (mailbox != NULL)
+			new_flags[i++] = 'm';
+	}
 	i_assert((unsigned int)i < sizeof(new_flags));
 	new_flags[i] = '\0';