]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict: Add username field for command events
authorSiavash Tavakoli <siavash.tavakoli@open-xchange.com>
Thu, 3 Jun 2021 18:59:23 +0000 (19:59 +0100)
committerSiavash Tavakoli <siavash.tavakoli@open-xchange.com>
Thu, 1 Jul 2021 21:17:49 +0000 (22:17 +0100)
To prepare for connection username removal in next commit. Instead of
adding username field for the parent event, add it in command events.

Commands can now be run for different users. Having the same username
field as the one used in initialization can be wrong.

src/dict/dict-commands.c
src/dict/dict-connection.c

index b98e8a5d8e113eaf40cf4f7d690b5e14eaabd136..ac898f7f0e5c5f1585b875704c7f21e10d2cfa41 100644 (file)
@@ -236,6 +236,7 @@ static int cmd_lookup(struct dict_connection_cmd *cmd, const char *line)
        /* <key> [<username>] */
        dict_connection_cmd_async(cmd);
        event_add_str(cmd->event, "key", args[0]);
+       event_add_str(cmd->event, "user", username);
        const struct dict_op_settings set = {
                .username = username,
        };
@@ -379,6 +380,7 @@ static int cmd_iterate(struct dict_connection_cmd *cmd, const char *line)
        /* <flags> <max_rows> <path> [<username>] */
        flags |= DICT_ITERATE_FLAG_ASYNC;
        event_add_str(cmd->event, "key", args[2]);
+       event_add_str(cmd->event, "user", username);
        cmd->iter = dict_iterate_init(cmd->conn->dict, &set, args[2], flags);
        cmd->iter_flags = flags;
        if (max_rows > 0)
@@ -548,6 +550,7 @@ cmd_commit(struct dict_connection_cmd *cmd, const char *line)
        if (dict_connection_transaction_lookup_parse(cmd->conn, line, &trans) < 0)
                return -1;
        cmd->trans_id = trans->id;
+       event_add_str(cmd->event, "user", trans->ctx->set.username);
 
        dict_connection_cmd_async(cmd);
        dict_transaction_commit_async(&trans->ctx, cmd_commit_callback, cmd);
@@ -562,6 +565,7 @@ cmd_commit_async(struct dict_connection_cmd *cmd, const char *line)
        if (dict_connection_transaction_lookup_parse(cmd->conn, line, &trans) < 0)
                return -1;
        cmd->trans_id = trans->id;
+       event_add_str(cmd->event, "user", trans->ctx->set.username);
 
        dict_connection_cmd_async(cmd);
        dict_transaction_commit_async(&trans->ctx, cmd_commit_callback_async, cmd);
@@ -575,6 +579,7 @@ static int cmd_rollback(struct dict_connection_cmd *cmd, const char *line)
        if (dict_connection_transaction_lookup_parse(cmd->conn, line, &trans) < 0)
                return -1;
 
+       event_add_str(cmd->event, "user", trans->ctx->set.username);
        dict_transaction_rollback(&trans->ctx);
        dict_connection_transaction_array_remove(cmd->conn, trans->id);
        return 0;
@@ -594,6 +599,7 @@ static int cmd_set(struct dict_connection_cmd *cmd, const char *line)
 
        if (dict_connection_transaction_lookup_parse(cmd->conn, args[0], &trans) < 0)
                return -1;
+       event_add_str(cmd->event, "user", trans->ctx->set.username);
         dict_set(trans->ctx, args[1], args[2]);
        return 0;
 }
index b7b36a1f5dea359cd169cd7284a9a93eb27e5774..079b16ec5e4b337655537f900e434eb220a1c341 100644 (file)
@@ -89,8 +89,6 @@ static int dict_connection_dict_init(struct dict_connection *conn)
                return -1;
        }
        event_add_str(conn->conn.event, "dict_name", conn->name);
-       if (conn->username[0] != '\0')
-               event_add_str(conn->conn.event, "user", conn->username);
        uri = strlist[i+1];
 
        i_zero(&dict_set);