]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm service stop: Moved command handling to doveadm-master.c
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 20 Oct 2016 10:09:09 +0000 (13:09 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 20 Oct 2016 20:04:40 +0000 (23:04 +0300)
It's talking to master process, and there will be other non-service commands
that talk to the master process in the same way.

src/doveadm/Makefile.am
src/doveadm/doveadm-master.c
src/doveadm/doveadm-service.c [deleted file]

index c7f025613cb3db564611fe2a8103c9b9a8c1d311..c6446461161b4c26a8bad5de5f8169b5e094872a 100644 (file)
@@ -77,7 +77,6 @@ doveadm_common_cmds = \
        doveadm-penalty.c \
        doveadm-proxy.c \
        doveadm-replicator.c \
-       doveadm-service.c \
        doveadm-sis.c \
        doveadm-stats.c \
        doveadm-who.c
index 41a28c8137bd3af5fbe7d097d2a9fdcff3cedd32..9d644cc78b9b07901d71757ed276c0ff5cdb2183 100644 (file)
@@ -1,6 +1,9 @@
 /* Copyright (c) 2010-2016 Dovecot authors, see the included COPYING file */
 
 #include "lib.h"
+#include "str.h"
+#include "istream.h"
+#include "write-full.h"
 #include "doveadm.h"
 
 #include <unistd.h>
@@ -84,6 +87,48 @@ static void cmd_reload(int argc ATTR_UNUSED, char *argv[] ATTR_UNUSED)
        doveadm_master_send_signal(SIGHUP);
 }
 
+static void cmd_service_stop(int argc, char *argv[])
+{
+       const char *path, *line;
+       int fd;
+
+       if (argc == 1)
+               help_ver2(&doveadm_cmd_service_stop_ver2);
+
+       path = t_strconcat(doveadm_settings->base_dir, "/master", NULL);
+       fd = net_connect_unix(path);
+       if (fd == -1)
+               i_fatal("net_connect_unix(%s) failed: %m", path);
+       net_set_nonblock(fd, FALSE);
+
+       string_t *cmd = t_str_new(128);
+       str_append(cmd, "VERSION\tmaster-client\t1\t0\nSTOP");
+       for (int i = 1; i < argc; i++) {
+               str_append_c(cmd, '\t');
+               str_append(cmd, argv[i]);
+       }
+       str_append_c(cmd, '\n');
+       if (write_full(fd, str_data(cmd), str_len(cmd)) < 0)
+               i_error("write(%s) failed: %m", path);
+
+       alarm(5);
+       struct istream *input = i_stream_create_fd(fd, IO_BLOCK_SIZE, FALSE);
+       if (i_stream_read_next_line(input) == NULL ||
+           (line = i_stream_read_next_line(input)) == NULL) {
+               i_error("read(%s) failed: %s", path, i_stream_get_error(input));
+               doveadm_exit_code = EX_TEMPFAIL;
+       } else if (line[0] == '-') {
+               doveadm_exit_code = DOVEADM_EX_NOTFOUND;
+               i_error("%s", line+1);
+       } else if (line[0] != '+') {
+               i_error("Unexpected input from %s: %s", path, line);
+               doveadm_exit_code = EX_TEMPFAIL;
+       }
+       alarm(0);
+       i_stream_destroy(&input);
+       i_close_fd(&fd);
+}
+
 struct doveadm_cmd_ver2 doveadm_cmd_stop_ver2 = {
        .old_cmd = cmd_stop,
        .name = "stop",
@@ -99,3 +144,12 @@ struct doveadm_cmd_ver2 doveadm_cmd_reload_ver2 = {
 DOVEADM_CMD_PARAMS_START
 DOVEADM_CMD_PARAMS_END
 };
+
+struct doveadm_cmd_ver2 doveadm_cmd_service_stop_ver2 = {
+       .old_cmd = cmd_service_stop,
+       .name = "service stop",
+       .usage = "<service> [<service> [...]]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_PARAM('\0', "service", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
+};
diff --git a/src/doveadm/doveadm-service.c b/src/doveadm/doveadm-service.c
deleted file mode 100644 (file)
index 95d9718..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (c) 2016 Dovecot authors, see the included COPYING file */
-
-#include "lib.h"
-#include "str.h"
-#include "write-full.h"
-#include "istream.h"
-#include "doveadm.h"
-
-#include <unistd.h>
-
-static void cmd_service_stop(int argc, char *argv[])
-{
-       const char *path, *line;
-       int fd;
-
-       if (argc == 1)
-               help_ver2(&doveadm_cmd_service_stop_ver2);
-
-       path = t_strconcat(doveadm_settings->base_dir, "/master", NULL);
-       fd = net_connect_unix(path);
-       if (fd == -1)
-               i_fatal("net_connect_unix(%s) failed: %m", path);
-       net_set_nonblock(fd, FALSE);
-
-       string_t *cmd = t_str_new(128);
-       str_append(cmd, "VERSION\tmaster-client\t1\t0\nSTOP");
-       for (int i = 1; i < argc; i++) {
-               str_append_c(cmd, '\t');
-               str_append(cmd, argv[i]);
-       }
-       str_append_c(cmd, '\n');
-       if (write_full(fd, str_data(cmd), str_len(cmd)) < 0)
-               i_error("write(%s) failed: %m", path);
-
-       alarm(5);
-       struct istream *input = i_stream_create_fd(fd, IO_BLOCK_SIZE, FALSE);
-       if (i_stream_read_next_line(input) == NULL ||
-           (line = i_stream_read_next_line(input)) == NULL) {
-               i_error("read(%s) failed: %s", path, i_stream_get_error(input));
-               doveadm_exit_code = EX_TEMPFAIL;
-       } else if (line[0] == '-') {
-               doveadm_exit_code = DOVEADM_EX_NOTFOUND;
-               i_error("%s", line+1);
-       } else if (line[0] != '+') {
-               i_error("Unexpected input from %s: %s", path, line);
-               doveadm_exit_code = EX_TEMPFAIL;
-       }
-       alarm(0);
-       i_stream_destroy(&input);
-       i_close_fd(&fd);
-}
-
-struct doveadm_cmd_ver2 doveadm_cmd_service_stop_ver2 = {
-       .old_cmd = cmd_service_stop,
-       .name = "service stop",
-       .usage = "<service> [<service> [...]]",
-DOVEADM_CMD_PARAMS_START
-DOVEADM_CMD_PARAM('\0', "service", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
-DOVEADM_CMD_PARAMS_END
-};