]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-program-client, global: Move noreply parameter to program_client_parameters
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 12 Aug 2024 10:27:07 +0000 (13:27 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:59 +0000 (10:39 +0200)
src/lib-program-client/program-client-remote.c
src/lib-program-client/program-client.c
src/lib-program-client/program-client.h
src/lib-program-client/test-program-client-net.c
src/lib-program-client/test-program-client-unix.c
src/plugins/quota/quota.c
src/plugins/welcome/welcome-plugin.c

index 922e58531458a971b1ef2dd48b5658c593a928b6..7468dc463c88005258b506c7fb8b76a67cb91319 100644 (file)
@@ -617,8 +617,7 @@ program_client_remote_switch_ioloop(struct program_client *pclient)
 
 struct program_client *
 program_client_unix_create(const char *socket_path, const char *const *args,
-                          const struct program_client_parameters *params,
-                          bool noreply)
+                          const struct program_client_parameters *params)
 {
        struct program_client_remote *prclient;
        const char *label;
@@ -634,7 +633,7 @@ program_client_unix_create(const char *socket_path, const char *const *args,
        prclient->client.disconnect = program_client_remote_disconnect;
        prclient->client.switch_ioloop = program_client_remote_switch_ioloop;
        prclient->address = p_strdup(pool, socket_path);
-       prclient->noreply = noreply;
+       prclient->noreply = params->no_reply;
 
        return &prclient->client;
 }
@@ -642,8 +641,7 @@ program_client_unix_create(const char *socket_path, const char *const *args,
 struct program_client *
 program_client_net_create(const char *host, in_port_t port,
                          const char *const *args,
-                         const struct program_client_parameters *params,
-                         bool noreply)
+                         const struct program_client_parameters *params)
 {
        struct program_client_remote *prclient;
        const char *label;
@@ -661,7 +659,7 @@ program_client_net_create(const char *host, in_port_t port,
        prclient->address = p_strdup(pool, host);
        prclient->port = port;
        prclient->have_hostname = TRUE;
-       prclient->noreply = noreply;
+       prclient->noreply = params->no_reply;
        return &prclient->client;
 }
 
@@ -669,8 +667,7 @@ struct program_client *
 program_client_net_create_ips(const struct ip_addr *ips, size_t ips_count,
                              in_port_t port,
                              const char *const *args,
-                             const struct program_client_parameters *params,
-                             bool noreply)
+                             const struct program_client_parameters *params)
 {
        struct program_client_remote *prclient;
        const char *label;
@@ -693,6 +690,6 @@ program_client_net_create_ips(const struct ip_addr *ips, size_t ips_count,
                                 sizeof(struct ip_addr)*ips_count);
        prclient->ips_count = ips_count;
        prclient->port = port;
-       prclient->noreply = noreply;
+       prclient->noreply = params->no_reply;
        return &prclient->client;
 }
index 1f497cc551983381f8c938030cbfab20e3e09fcf..539d3588a74bf7ff6056d758d959b9aa17a3d5b2 100644 (file)
@@ -664,8 +664,7 @@ void program_client_switch_ioloop(struct program_client *pclient)
 
 int program_client_create(const char *uri, const char *const *args,
                          const struct program_client_parameters *params,
-                         bool noreply, struct program_client **pc_r,
-                         const char **error_r)
+                         struct program_client **pc_r, const char **error_r)
 {
        const char *suffix;
 
@@ -673,7 +672,7 @@ int program_client_create(const char *uri, const char *const *args,
                *pc_r = program_client_local_create(suffix, args, params);
                return 0;
        } else if (str_begins(uri, "unix:", &suffix)) {
-               *pc_r = program_client_unix_create(suffix, args, params, noreply);
+               *pc_r = program_client_unix_create(suffix, args, params);
                return 0;
        } else if (str_begins(uri, "tcp:", &suffix)) {
                const char *host;
@@ -686,8 +685,7 @@ int program_client_create(const char *uri, const char *const *args,
                                "must be host:port in '%s'", suffix);
                        return -1;
                }
-               *pc_r = program_client_net_create(host, port, args, params,
-                                                 noreply);
+               *pc_r = program_client_net_create(host, port, args, params);
                return 0;
        } else {
                *error_r = t_strdup_printf(
index d62f951c4a654709b075926fd4fd7ca17c50015f..2397f7a375fad4ab60680d9f49084455a97db855 100644 (file)
@@ -26,6 +26,7 @@ struct program_client_parameters {
           enabled for 'net' program clients, which may likely encounter
           unexpected connection termination. */
        bool use_dotstream:1;
+       bool no_reply:1;
 };
 
 typedef void program_client_fd_callback_t(void *context, struct istream *input);
@@ -38,22 +39,18 @@ program_client_local_create(const char *bin_path, const char *const *args,
                            ATTR_NULL(3);
 struct program_client *
 program_client_unix_create(const char *socket_path, const char *const *args,
-                          const struct program_client_parameters *params,
-                          bool noreply) ATTR_NULL(3);
+                          const struct program_client_parameters *params);
 struct program_client *
 program_client_net_create(const char *host, in_port_t port,
                          const char *const *args,
-                         const struct program_client_parameters *params,
-                         bool noreply) ATTR_NULL(4);
+                         const struct program_client_parameters *params);
 struct program_client *
 program_client_net_create_ips(const struct ip_addr *ips, size_t ips_count,
                              in_port_t port, const char *const *args,
-                             const struct program_client_parameters *params,
-                             bool noreply) ATTR_NULL(5);
+                             const struct program_client_parameters *params);
 int program_client_create(const char *uri, const char *const *args,
                          const struct program_client_parameters *params,
-                         bool noreply, struct program_client **pc_r,
-                         const char **error_r) ATTR_NULL(3);
+                         struct program_client **pc_r, const char **error_r);
 
 void program_client_destroy(struct program_client **_pclient);
 
index b3d0114e4e27a402de5fa69d989ceca32e97d6bf..5368aeda7c402cfae95c682d3fe507668129ad5d 100644 (file)
@@ -335,8 +335,9 @@ static void test_program_success(void)
 
        test_begin("test_program_success");
 
+       pc_params.no_reply = FALSE;
        pc = program_client_net_create("127.0.0.1", test_globals.port, args,
-                                      &pc_params, FALSE);
+                                      &pc_params);
 
        buffer_t *output = buffer_create_dynamic(default_pool, 16);
        struct ostream *os = test_ostream_create(output);
@@ -365,8 +366,9 @@ static void test_program_io_common(const char *const *args)
        struct program_client *pc;
        int ret = -2;
 
+       pc_params.no_reply = FALSE;
        pc = program_client_net_create("127.0.0.1", test_globals.port, args,
-                                      &pc_params, FALSE);
+                                      &pc_params);
 
        struct istream *is = test_istream_create(pclient_test_io_string);
        program_client_set_input(pc, is);
@@ -424,8 +426,9 @@ static void test_program_failure(void)
 
        test_begin("test_program_failure");
 
+       pc_params.no_reply = FALSE;
        pc = program_client_net_create("127.0.0.1", test_globals.port, args,
-                                      &pc_params, FALSE);
+                                      &pc_params);
 
        buffer_t *output = buffer_create_dynamic(default_pool, 16);
        struct ostream *os = test_ostream_create(output);
@@ -459,8 +462,9 @@ static void test_program_noreply(void)
 
        test_begin("test_program_noreply");
 
+       pc_params.no_reply = TRUE;
        pc = program_client_net_create("127.0.0.1", test_globals.port, args,
-                                      &pc_params, TRUE);
+                                      &pc_params);
 
        program_client_run_async(pc, test_program_async_callback, &ret);
 
@@ -495,9 +499,10 @@ static void test_program_refused(void)
                i_fatal("Cannot convert addresses");
        }
 
+       pc_params.no_reply = TRUE;
        pc = program_client_net_create_ips(ips, N_ELEMENTS(ips),
                                           test_globals.port, args,
-                                          &pc_params, TRUE);
+                                          &pc_params);
 
        test_expect_errors(N_ELEMENTS(ips)-1);
        program_client_run_async(pc, test_program_async_callback, &ret);
index 94ba3700f097e4d9104d3c2d6b8142feb83fec1c..c9d321920f460e5e9706f6f25412754d1183da65 100644 (file)
@@ -288,7 +288,8 @@ static void test_program_success(void)
 
        test_begin("test_program_success");
 
-       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params, FALSE);
+       pc_params.no_reply = FALSE;
+       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params);
 
        buffer_t *output = buffer_create_dynamic(default_pool, 16);
        struct ostream *os = test_ostream_create(output);
@@ -314,7 +315,8 @@ static void test_program_io_common(const char *const *args)
        struct program_client *pc;
        int ret;
 
-       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params, FALSE);
+       pc_params.no_reply = FALSE;
+       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params);
 
        struct istream *is = test_istream_create(pclient_test_io_string);
        program_client_set_input(pc, is);
@@ -369,7 +371,8 @@ static void test_program_failure(void)
 
        test_begin("test_program_failure");
 
-       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params, FALSE);
+       pc_params.no_reply = FALSE;
+       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params);
 
        buffer_t *output = buffer_create_dynamic(default_pool, 16);
        struct ostream *os = test_ostream_create(output);
@@ -400,7 +403,8 @@ static void test_program_noreply(void)
 
        test_begin("test_program_noreply");
 
-       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params, TRUE);
+       pc_params.no_reply = TRUE;
+       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params);
 
        program_client_run_async(pc, test_program_async_callback, &ret);
 
@@ -424,7 +428,8 @@ static void test_program_sync(void)
 
        test_begin("test_program_sync");
 
-       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params, TRUE);
+       pc_params.no_reply = TRUE;
+       pc = program_client_unix_create(TEST_SOCKET, args, &pc_params);
        ret = program_client_run(pc);
        test_assert(ret == 1);
 
@@ -449,8 +454,9 @@ static void test_program_async_wait(void)
 
        test_begin("test_program_async_wait");
 
+       pc_params.no_reply = TRUE;
        test_globals.async_client = program_client_unix_create(TEST_SOCKET,
-                       args, &pc_params, TRUE);
+                       args, &pc_params);
 
        program_client_run_async(test_globals.async_client,
                                 test_program_async_wait_finish,
index 16cd35cae129ca6988682d78860d95d1ea3a3285..915e5a047f6d11c6f74d12e17a8ea8270fad0777 100644 (file)
@@ -1011,6 +1011,7 @@ static void quota_warning_execute(struct quota_root *root, const char *cmd,
        struct program_client_parameters params = {
                .client_connect_timeout_msecs = 1000,
                .event = root->quota->event,
+               .no_reply = TRUE,
        };
        struct program_client *pc;
 
@@ -1044,7 +1045,7 @@ static void quota_warning_execute(struct quota_root *root, const char *cmd,
 
        args++;
 
-       if (program_client_create(socket_path, args, &params, TRUE,
+       if (program_client_create(socket_path, args, &params,
                                  &pc, &error) < 0) {
                e_error(root->quota->event,
                        "program_client_create(%s) failed: %s", socket_path,
index 45d434d9e365b81f1180bad6d4c5a1625e0e19cc..ff00abff646ac3438d212ee2acde8838a9a95845 100644 (file)
@@ -52,6 +52,7 @@ static void script_execute(struct mail_user *user, const char *cmd, bool wait)
        struct program_client_parameters params = {
                .client_connect_timeout_msecs = 1000,
                .event = user->event,
+               .no_reply = !wait,
        };
 
        e_debug(user->event, "welcome: Executing %s (wait=%d)", cmd, wait ? 1 : 0);
@@ -66,7 +67,7 @@ static void script_execute(struct mail_user *user, const char *cmd, bool wait)
        }
 
        struct welcome_client_list *wclient = i_new(struct welcome_client_list, 1);
-       wclient->client = program_client_unix_create(socket_path, args, &params, !wait);
+       wclient->client = program_client_unix_create(socket_path, args, &params);
 
        if (wait) {
                enum program_client_exit_status ret =