]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict: Split off cmd_iterate_flush_finish()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 14 May 2020 19:52:08 +0000 (22:52 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Wed, 20 May 2020 08:56:20 +0000 (08:56 +0000)
src/dict/dict-commands.c

index 7b1e5d782645c7dc360d7099818864c091562bcc..85d57e9ddf965e6b7d3e124eb4aa3c81e7001ac0 100644 (file)
@@ -241,10 +241,31 @@ static bool dict_connection_flush_if_full(struct dict_connection *conn)
        return TRUE;
 }
 
+static void
+cmd_iterate_flush_finish(struct dict_connection_cmd *cmd, string_t *str)
+{
+       const char *error;
+
+       event_set_name(cmd->event, "dict_server_iteration_finished");
+       str_truncate(str, 0);
+       if (dict_iterate_deinit(&cmd->iter, &error) < 0) {
+               event_add_str(cmd->event, "error", error);
+               e_error(cmd->event, "dict_iterate() failed: %s", error);
+               str_printfa(str, "%c%s", DICT_PROTOCOL_REPLY_FAIL, error);
+       } else {
+               event_add_int(cmd->event, "rows", cmd->rows);
+               e_debug(cmd->event, "Iteration finished");
+       }
+       dict_cmd_reply_handle_stats(cmd, str, cmd_stats.iterations);
+       str_append_c(str, '\n');
+
+       cmd->reply = i_strdup(str_c(str));
+}
+
 static int cmd_iterate_flush(struct dict_connection_cmd *cmd)
 {
        string_t *str;
-       const char *key, *value, *error;
+       const char *key, *value;
 
        if (!dict_connection_flush_if_full(cmd->conn))
                return 0;
@@ -273,21 +294,7 @@ static int cmd_iterate_flush(struct dict_connection_cmd *cmd)
                return 0;
        }
 
-       event_set_name(cmd->event, "dict_server_iteration_finished");
-
-       str_truncate(str, 0);
-       if (dict_iterate_deinit(&cmd->iter, &error) < 0) {
-               event_add_str(cmd->event, "error", error);
-               e_error(cmd->event, "dict_iterate() failed: %s", error);
-               str_printfa(str, "%c%s", DICT_PROTOCOL_REPLY_FAIL, error);
-       } else {
-               event_add_int(cmd->event, "rows", cmd->rows);
-               e_debug(cmd->event, "Iteration finished");
-       }
-       dict_cmd_reply_handle_stats(cmd, str, cmd_stats.iterations);
-       str_append_c(str, '\n');
-
-       cmd->reply = i_strdup(str_c(str));
+       cmd_iterate_flush_finish(cmd, str);
        return 1;
 }