From 9ba1a38e2fa5ffe9d0db83c4a14a6552bcff3181 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 24 Oct 2016 20:08:54 +0300 Subject: [PATCH] director: Code cleanup - moved command handling to its own function. --- src/director/doveadm-connection.c | 102 ++++++++++++++++-------------- 1 file changed, 56 insertions(+), 46 deletions(-) diff --git a/src/director/doveadm-connection.c b/src/director/doveadm-connection.c index 0d8892761a..7451adfc2d 100644 --- a/src/director/doveadm-connection.c +++ b/src/director/doveadm-connection.c @@ -605,9 +605,63 @@ doveadm_cmd_user_kick(struct doveadm_connection *conn, const char *line) 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 @@ static void doveadm_connection_input(struct doveadm_connection *conn) } 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); -- 2.47.3