]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm-server: Skip doveadm_print_init
authorAki Tuomi <aki.tuomi@dovecot.fi>
Sat, 4 Jun 2016 05:14:45 +0000 (08:14 +0300)
committerGitLab <gitlab@git.dovecot.net>
Wed, 29 Jun 2016 13:36:58 +0000 (16:36 +0300)
Some commands need to do output that is not doable with
doveadm_print, so we need to have a flag to indicate this.

src/doveadm/client-connection-http.c
src/doveadm/doveadm-cmd.h

index 9cb636cbbd718138b89d3e6c175f05caca8e855f..b2af80f4e8f6e0c54536c19060e87ec31d560f19 100644 (file)
@@ -323,8 +323,11 @@ doveadm_http_server_command_execute(struct client_connection_http *conn)
 
        // create iostream
        doveadm_print_ostream = iostream_temp_create("/tmp/doveadm.", 0);
+       cctx.cmd = conn->cmd;
+
+       if ((cctx.cmd->flags & CMD_FLAG_NO_PRINT) == 0)
+               doveadm_print_init(DOVEADM_PRINT_TYPE_JSON);
 
-       doveadm_print_init(DOVEADM_PRINT_TYPE_JSON);
        /* then call it */
        doveadm_cmd_params_null_terminate_arrays(&conn->pargv);
        cctx.argv = array_get(&conn->pargv, (unsigned int*)&cctx.argc);
@@ -332,7 +335,6 @@ doveadm_http_server_command_execute(struct client_connection_http *conn)
        lib_signals_reset_ioloop();
        doveadm_exit_code = 0;
 
-       cctx.cmd = conn->cmd;
        cctx.cli = FALSE;
        cctx.local_ip = conn->client.local_ip;
        cctx.local_port = conn->client.local_port;
@@ -351,7 +353,8 @@ doveadm_http_server_command_execute(struct client_connection_http *conn)
        io_loop_set_current(ioloop);
        io_loop_destroy(&ioloop);
 
-       doveadm_print_deinit();
+       if ((cctx.cmd->flags & CMD_FLAG_NO_PRINT) == 0)
+               doveadm_print_deinit();
        if (o_stream_nfinish(doveadm_print_ostream)<0) {
                i_info("Error writing output in command %s: %s",
                       conn->cmd->name,
index 6e2d2b878a1ca47aed0a59baca133f8cf81dd42c..db044979524742fde3b5c9df7a9a79b80f33b941 100644 (file)
@@ -30,7 +30,8 @@ typedef enum {
 
 typedef enum {
        CMD_FLAG_NONE                   = 0x0,
-       CMD_FLAG_HIDDEN                 = 0x1
+       CMD_FLAG_HIDDEN                 = 0x1,
+       CMD_FLAG_NO_PRINT               = 0x2,
 } doveadm_cmd_flag_t;
 
 struct doveadm_cmd_param {