changeset 19496:13afb0912164

doveadm director update: Tag can't be changed - don't allow -t parameter
author Timo Sirainen <tss@iki.fi>
date Wed, 09 Dec 2015 13:02:19 +0200
parents 4535ac0b8ab1
children 1d2999cfe0a4
files src/doveadm/doveadm-director.c
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-director.c	Wed Dec 09 12:43:18 2015 +0200
+++ b/src/doveadm/doveadm-director.c	Wed Dec 09 13:02:19 2015 +0200
@@ -408,15 +408,16 @@
 
 static void
 cmd_director_add_or_update(int argc, char *argv[], doveadm_command_t *cmd_func,
-			   const char *director_cmd)
+			   bool update)
 {
+	const char *director_cmd = update ? "HOST-UPDATE" : "HOST-SET";
 	struct director_context *ctx;
 	struct ip_addr *ips;
 	unsigned int i, ips_count, vhost_count = UINT_MAX;
 	const char *host, *line;
 	string_t *cmd;
 
-	ctx = cmd_director_init(argc, argv, "a:t:", cmd_func);
+	ctx = cmd_director_init(argc, argv, update ? "a:" : "a:t:", cmd_func);
 	if (ctx->tag != NULL && ctx->tag[0] == '\0')
 		ctx->tag = NULL;
 	host = argv[optind++];
@@ -465,12 +466,12 @@
 
 static void cmd_director_add(int argc, char *argv[])
 {
-	cmd_director_add_or_update(argc, argv, cmd_director_add, "HOST-SET");
+	cmd_director_add_or_update(argc, argv, cmd_director_add, FALSE);
 }
 
 static void cmd_director_update(int argc, char *argv[])
 {
-	cmd_director_add_or_update(argc, argv, cmd_director_update, "HOST-UPDATE");
+	cmd_director_add_or_update(argc, argv, cmd_director_update, TRUE);
 }
 
 static void
@@ -824,7 +825,7 @@
 	{ cmd_director_add, "director add",
 	  "[-a <director socket path>] [-t <tag>] <host> [<vhost count>]" },
 	{ cmd_director_update, "director update",
-	  "[-a <director socket path>] [-t <tag>] <host> <vhost count>" },
+	  "[-a <director socket path>] <host> <vhost count>" },
 	{ cmd_director_up, "director up",
 	  "[-a <director socket path>] <host>" },
 	{ cmd_director_down, "director down",