changeset 20967:1be6845a989b

director: Code cleanup - moved command handling to its own function.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Mon, 24 Oct 2016 20:08:54 +0300
parents 9a41bc549b03
children 2a7e47e01509
files src/director/doveadm-connection.c
diffstat 1 files changed, 56 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/src/director/doveadm-connection.c	Mon Oct 24 20:07:26 2016 +0300
+++ b/src/director/doveadm-connection.c	Mon Oct 24 20:08:54 2016 +0300
@@ -605,9 +605,63 @@
 	return 1;
 }
 
+static int
+doveadm_connection_cmd(struct doveadm_connection *conn, const char *line)
+{
+	const char *cmd, *args;
+	int ret = 1;
+
+	args = strchr(line, '\t');
+	if (args == NULL) {
+		cmd = line;
+		args = "";
+	} else {
+		cmd = t_strdup_until(line, args);
+		args++;
+	}
+
+	if (strcmp(cmd, "HOST-LIST") == 0)
+		doveadm_cmd_host_list(conn);
+	else if (strcmp(cmd, "HOST-LIST-REMOVED") == 0)
+		doveadm_cmd_host_list_removed(conn);
+	else if (strcmp(cmd, "DIRECTOR-LIST") == 0)
+		doveadm_cmd_director_list(conn);
+	else if (strcmp(cmd, "DIRECTOR-ADD") == 0)
+		ret = doveadm_cmd_director_add(conn, args);
+	else if (strcmp(cmd, "DIRECTOR-REMOVE") == 0)
+		ret = doveadm_cmd_director_remove(conn, args);
+	else if (strcmp(cmd, "HOST-SET") == 0)
+		ret = doveadm_cmd_host_set(conn, args);
+	else if (strcmp(cmd, "HOST-UPDATE") == 0)
+		ret = doveadm_cmd_host_update(conn, args);
+	else if (strcmp(cmd, "HOST-UP") == 0)
+		ret = doveadm_cmd_host_updown(conn, FALSE, args);
+	else if (strcmp(cmd, "HOST-DOWN") == 0)
+		ret = doveadm_cmd_host_updown(conn, TRUE, args);
+	else if (strcmp(cmd, "HOST-REMOVE") == 0)
+		ret = doveadm_cmd_host_remove(conn, args);
+	else if (strcmp(cmd, "HOST-FLUSH") == 0)
+		ret = doveadm_cmd_host_flush(conn, args);
+	else if (strcmp(cmd, "HOST-RESET-USERS") == 0)
+		ret = doveadm_cmd_host_reset_users(conn, args);
+	else if (strcmp(cmd, "USER-LOOKUP") == 0)
+		ret = doveadm_cmd_user_lookup(conn, args);
+	else if (strcmp(cmd, "USER-LIST") == 0)
+		ret = doveadm_cmd_user_list(conn, args);
+	else if (strcmp(cmd, "USER-MOVE") == 0)
+		ret = doveadm_cmd_user_move(conn, args);
+	else if (strcmp(cmd, "USER-KICK") == 0)
+		ret = doveadm_cmd_user_kick(conn, args);
+	else {
+		i_error("doveadm sent unknown command: %s", line);
+		ret = -1;
+	}
+	return ret;
+}
+
 static void doveadm_connection_input(struct doveadm_connection *conn)
 {
-	const char *line, *cmd, *args;
+	const char *line;
 	int ret = 1;
 
 	if (!conn->handshaked) {
@@ -628,51 +682,7 @@
 	}
 
 	while ((line = i_stream_read_next_line(conn->input)) != NULL && ret > 0) {
-		args = strchr(line, '\t');
-		if (args == NULL) {
-			cmd = line;
-			args = "";
-		} else {
-			cmd = t_strdup_until(line, args);
-			args++;
-		}
-
-		if (strcmp(cmd, "HOST-LIST") == 0)
-			doveadm_cmd_host_list(conn);
-		else if (strcmp(cmd, "HOST-LIST-REMOVED") == 0)
-			doveadm_cmd_host_list_removed(conn);
-		else if (strcmp(cmd, "DIRECTOR-LIST") == 0)
-			doveadm_cmd_director_list(conn);
-		else if (strcmp(cmd, "DIRECTOR-ADD") == 0)
-			ret = doveadm_cmd_director_add(conn, args);
-		else if (strcmp(cmd, "DIRECTOR-REMOVE") == 0)
-			ret = doveadm_cmd_director_remove(conn, args);
-		else if (strcmp(cmd, "HOST-SET") == 0)
-			ret = doveadm_cmd_host_set(conn, args);
-		else if (strcmp(cmd, "HOST-UPDATE") == 0)
-			ret = doveadm_cmd_host_update(conn, args);
-		else if (strcmp(cmd, "HOST-UP") == 0)
-			ret = doveadm_cmd_host_updown(conn, FALSE, args);
-		else if (strcmp(cmd, "HOST-DOWN") == 0)
-			ret = doveadm_cmd_host_updown(conn, TRUE, args);
-		else if (strcmp(cmd, "HOST-REMOVE") == 0)
-			ret = doveadm_cmd_host_remove(conn, args);
-		else if (strcmp(cmd, "HOST-FLUSH") == 0)
-			ret = doveadm_cmd_host_flush(conn, args);
-		else if (strcmp(cmd, "HOST-RESET-USERS") == 0)
-			ret = doveadm_cmd_host_reset_users(conn, args);
-		else if (strcmp(cmd, "USER-LOOKUP") == 0)
-			ret = doveadm_cmd_user_lookup(conn, args);
-		else if (strcmp(cmd, "USER-LIST") == 0)
-			ret = doveadm_cmd_user_list(conn, args);
-		else if (strcmp(cmd, "USER-MOVE") == 0)
-			ret = doveadm_cmd_user_move(conn, args);
-		else if (strcmp(cmd, "USER-KICK") == 0)
-			ret = doveadm_cmd_user_kick(conn, args);
-		else {
-			i_error("doveadm sent unknown command: %s", line);
-			ret = -1;
-		}
+		ret = doveadm_connection_cmd(conn, line);
 	}
 	if (conn->input->eof || conn->input->stream_errno != 0 || ret < 0)
 		doveadm_connection_deinit(&conn);