From: Siavash Tavakoli Date: Thu, 3 Jun 2021 18:59:23 +0000 (+0100) Subject: dict: Add username field for command events X-Git-Tag: 2.3.17~355 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=037442cde7441c5b7d51b69a74c6eb4aa5d252c9;p=thirdparty%2Fdovecot%2Fcore.git dict: Add username field for command events 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. --- diff --git a/src/dict/dict-commands.c b/src/dict/dict-commands.c index b98e8a5d8e..ac898f7f0e 100644 --- a/src/dict/dict-commands.c +++ b/src/dict/dict-commands.c @@ -236,6 +236,7 @@ static int cmd_lookup(struct dict_connection_cmd *cmd, const char *line) /* [] */ 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 |= 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; } diff --git a/src/dict/dict-connection.c b/src/dict/dict-connection.c index b7b36a1f5d..079b16ec5e 100644 --- a/src/dict/dict-connection.c +++ b/src/dict/dict-connection.c @@ -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);