From: Siavash Tavakoli Date: Mon, 3 May 2021 14:09:01 +0000 (+0100) Subject: lib-dict: Add dict_op_settings parameter for dict_transaction_begin() X-Git-Tag: 2.3.17~391 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8c0a16627e01c99ddbebd6a00ed7e857aee7b514;p=thirdparty%2Fdovecot%2Fcore.git lib-dict: Add dict_op_settings parameter for dict_transaction_begin() Only adds the parameter, doesn't use it. --- diff --git a/src/dict/dict-commands.c b/src/dict/dict-commands.c index bdb7c40be3..3d585508c9 100644 --- a/src/dict/dict-commands.c +++ b/src/dict/dict-commands.c @@ -422,7 +422,7 @@ static int cmd_begin(struct dict_connection_cmd *cmd, const char *line) trans = array_append_space(&cmd->conn->transactions); trans->id = id; trans->conn = cmd->conn; - trans->ctx = dict_transaction_begin(cmd->conn->dict); + trans->ctx = dict_transaction_begin(cmd->conn->dict, NULL); return 0; } diff --git a/src/doveadm/doveadm-dict.c b/src/doveadm/doveadm-dict.c index 134e762acd..db10dce795 100644 --- a/src/doveadm/doveadm-dict.c +++ b/src/doveadm/doveadm-dict.c @@ -146,7 +146,7 @@ static void cmd_dict_set(struct doveadm_cmd_context *cctx) if (cmd_dict_init(cctx, cmd_dict_set, &dict) < 0) return; - trans = dict_transaction_begin(dict); + trans = dict_transaction_begin(dict, NULL); dict_set(trans, key, value); if (dict_transaction_commit(&trans, &error) <= 0) { i_error("dict_transaction_commit() failed: %s", error); @@ -171,7 +171,7 @@ static void cmd_dict_unset(struct doveadm_cmd_context *cctx) if (cmd_dict_init(cctx, cmd_dict_unset, &dict) < 0) return; - trans = dict_transaction_begin(dict); + trans = dict_transaction_begin(dict, NULL); dict_unset(trans, key); if (dict_transaction_commit(&trans, &error) <= 0) { i_error("dict_transaction_commit() failed: %s", error); @@ -199,7 +199,7 @@ static void cmd_dict_inc(struct doveadm_cmd_context *cctx) if (cmd_dict_init(cctx, cmd_dict_inc, &dict) < 0) return; - trans = dict_transaction_begin(dict); + trans = dict_transaction_begin(dict, NULL); dict_atomic_inc(trans, key, diff); ret = dict_transaction_commit(&trans, &error); if (ret < 0) { diff --git a/src/lib-dict-backend/test-dict-sql.c b/src/lib-dict-backend/test-dict-sql.c index ffaa9c6a8e..51a7e43dba 100644 --- a/src/lib-dict-backend/test-dict-sql.c +++ b/src/lib-dict-backend/test-dict-sql.c @@ -92,7 +92,7 @@ static void test_atomic_inc(void) test_set_expected(dict, &res); /* 1 field */ - struct dict_transaction_context *ctx = dict_transaction_begin(dict); + struct dict_transaction_context *ctx = dict_transaction_begin(dict, NULL); dict_atomic_inc(ctx, "shared/counters/global/counter", 128); test_assert(dict_transaction_commit(&ctx, &error) == 0); if (error != NULL) @@ -100,7 +100,7 @@ static void test_atomic_inc(void) error = NULL; /* 2 fields */ - ctx = dict_transaction_begin(dict); + ctx = dict_transaction_begin(dict, NULL); dict_atomic_inc(ctx, "priv/quota/bytes", 128); dict_atomic_inc(ctx, "priv/quota/count", 1); test_assert(dict_transaction_commit(&ctx, &error) == 0); @@ -109,7 +109,7 @@ static void test_atomic_inc(void) error = NULL; /* 3 fields */ - ctx = dict_transaction_begin(dict); + ctx = dict_transaction_begin(dict, NULL); dict_atomic_inc(ctx, "priv/quota/bytes", 128); dict_atomic_inc(ctx, "priv/quota/count", 1); dict_atomic_inc(ctx, "priv/quota/folders", 123); @@ -141,7 +141,7 @@ static void test_set(void) test_set_expected(dict, &res); /* 1 field */ - struct dict_transaction_context *ctx = dict_transaction_begin(dict); + struct dict_transaction_context *ctx = dict_transaction_begin(dict, NULL); dict_set(ctx, "shared/counters/global/counter", "128"); test_assert(dict_transaction_commit(&ctx, &error) == 1); if (error != NULL) @@ -149,7 +149,7 @@ static void test_set(void) error = NULL; /* 2 fields */ - ctx = dict_transaction_begin(dict); + ctx = dict_transaction_begin(dict, NULL); dict_set(ctx, "priv/quota/bytes", "128"); dict_set(ctx, "priv/quota/count", "1"); test_assert(dict_transaction_commit(&ctx, &error) == 1); @@ -158,7 +158,7 @@ static void test_set(void) error = NULL; /* 3 fields */ - ctx = dict_transaction_begin(dict); + ctx = dict_transaction_begin(dict, NULL); dict_set(ctx, "priv/quota/bytes", "128"); dict_set(ctx, "priv/quota/count", "1"); dict_set(ctx, "priv/quota/folders", "123"); @@ -189,13 +189,13 @@ static void test_unset(void) test_set_expected(dict, &res); - struct dict_transaction_context *ctx = dict_transaction_begin(dict); + struct dict_transaction_context *ctx = dict_transaction_begin(dict, NULL); dict_unset(ctx, "shared/counters/global/counter"); test_assert(dict_transaction_commit(&ctx, &error) == 1); if (error != NULL) i_error("dict_transaction_commit failed: %s", error); error = NULL; - ctx = dict_transaction_begin(dict); + ctx = dict_transaction_begin(dict, NULL); dict_unset(ctx, "priv/quota/bytes"); dict_unset(ctx, "priv/quota/count"); test_assert(dict_transaction_commit(&ctx, &error) == 1); diff --git a/src/lib-dict-extra/test-dict-fs.c b/src/lib-dict-extra/test-dict-fs.c index aa7f67491e..e51a267710 100644 --- a/src/lib-dict-extra/test-dict-fs.c +++ b/src/lib-dict-extra/test-dict-fs.c @@ -9,7 +9,7 @@ static void test_dict_set_get(struct dict *dict, const char *key, const char *value) { const char *got_value, *error; - struct dict_transaction_context *t = dict_transaction_begin(dict); + struct dict_transaction_context *t = dict_transaction_begin(dict, NULL); dict_set(t, key, value); if (dict_transaction_commit(&t, &error) < 0) i_fatal("dict_transaction_commit(%s) failed: %s", key, error); diff --git a/src/lib-dict/dict-txn-lua.c b/src/lib-dict/dict-txn-lua.c index 854008611f..8e13e9d227 100644 --- a/src/lib-dict/dict-txn-lua.c +++ b/src/lib-dict/dict-txn-lua.c @@ -185,7 +185,7 @@ int lua_dict_transaction_begin(lua_State *L) pool = pool_alloconly_create("lua dict txn", 128); txn = p_new(pool, struct lua_dict_txn, 1); txn->pool = pool; - txn->txn = dict_transaction_begin(dict); + txn->txn = dict_transaction_begin(dict, NULL); txn->state = STATE_OPEN; txn->L = L; diff --git a/src/lib-dict/dict.c b/src/lib-dict/dict.c index 250dacb48e..1725137764 100644 --- a/src/lib-dict/dict.c +++ b/src/lib-dict/dict.c @@ -471,7 +471,8 @@ int dict_iterate_deinit(struct dict_iterate_context **_ctx, return ret; } -struct dict_transaction_context *dict_transaction_begin(struct dict *dict) +struct dict_transaction_context * +dict_transaction_begin(struct dict *dict, const struct dict_op_settings *set ATTR_UNUSED) { struct dict_transaction_context *ctx; guid_128_t guid; diff --git a/src/lib-dict/dict.h b/src/lib-dict/dict.h index 9b48376c57..969801f3d5 100644 --- a/src/lib-dict/dict.h +++ b/src/lib-dict/dict.h @@ -151,7 +151,8 @@ bool dict_iterate_values(struct dict_iterate_context *ctx, int dict_iterate_deinit(struct dict_iterate_context **ctx, const char **error_r); /* Start a new dictionary transaction. */ -struct dict_transaction_context *dict_transaction_begin(struct dict *dict); +struct dict_transaction_context * +dict_transaction_begin(struct dict *dict, const struct dict_op_settings *set); /* Don't log a warning if the transaction commit took a long time. This is needed if there are no guarantees that an asynchronous commit will finish up anytime soon. Mainly useful for transactions which aren't diff --git a/src/lib-dict/test-dict-client.c b/src/lib-dict/test-dict-client.c index 74e58c066d..326d1a62a1 100644 --- a/src/lib-dict/test-dict-client.c +++ b/src/lib-dict/test-dict-client.c @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) struct dict_transaction_context *trans; pending++; - trans = dict_transaction_begin(dict); + trans = dict_transaction_begin(dict, NULL); dict_set(trans, key, value); dict_transaction_commit_async(&trans, commit_callback, NULL); break; @@ -76,7 +76,7 @@ int main(int argc, char *argv[]) struct dict_transaction_context *trans; pending++; - trans = dict_transaction_begin(dict); + trans = dict_transaction_begin(dict, NULL); dict_unset(trans, key); dict_transaction_commit_async(&trans, commit_callback, NULL); break; diff --git a/src/lib-fs/fs-dict.c b/src/lib-fs/fs-dict.c index 172236ffbe..791b973b18 100644 --- a/src/lib-fs/fs-dict.c +++ b/src/lib-fs/fs-dict.c @@ -222,7 +222,7 @@ static int fs_dict_write_stream_finish(struct fs_file *_file, bool success) return -1; fs_dict_write_rename_if_needed(file); - trans = dict_transaction_begin(fs->dict); + trans = dict_transaction_begin(fs->dict, NULL); switch (fs->encoding) { case FS_DICT_VALUE_ENCODING_RAW: dict_set(trans, file->key, str_c(file->write_buffer)); @@ -270,7 +270,7 @@ static int fs_dict_delete(struct fs_file *_file) struct dict_transaction_context *trans; const char *error; - trans = dict_transaction_begin(fs->dict); + trans = dict_transaction_begin(fs->dict, NULL); dict_unset(trans, file->key); if (dict_transaction_commit(&trans, &error) < 0) { fs_set_error(_file->event, EIO, diff --git a/src/lib-oauth2/test-oauth2-jwt.c b/src/lib-oauth2/test-oauth2-jwt.c index 80aa82c9a1..47d40b36ee 100644 --- a/src/lib-oauth2/test-oauth2-jwt.c +++ b/src/lib-oauth2/test-oauth2-jwt.c @@ -233,7 +233,7 @@ static void save_key_azp_to(const char *algo, const char *azp, { const char *error; struct dict_transaction_context *ctx = - dict_transaction_begin(keys_dict); + dict_transaction_begin(keys_dict, NULL); algo = t_str_ucase(algo); dict_set(ctx, t_strconcat(DICT_PATH_SHARED, azp, "/", algo, "/", name, NULL), diff --git a/src/lib-storage/index/index-attribute.c b/src/lib-storage/index/index-attribute.c index e7d20888d6..031237fcc1 100644 --- a/src/lib-storage/index/index-attribute.c +++ b/src/lib-storage/index/index-attribute.c @@ -203,7 +203,7 @@ index_storage_attribute_get_dict_trans(struct mailbox_transaction_context *t, if (index_storage_get_dict(t->box, type_flags, &dict, mailbox_prefix_r) < 0) return -1; i_assert(*dtransp == NULL); - *dtransp = *dtrans_r = dict_transaction_begin(dict); + *dtransp = *dtrans_r = dict_transaction_begin(dict, NULL); return 0; } diff --git a/src/plugins/acl/acl-lookup-dict.c b/src/plugins/acl/acl-lookup-dict.c index 61d5fa8793..188594f066 100644 --- a/src/plugins/acl/acl-lookup-dict.c +++ b/src/plugins/acl/acl-lookup-dict.c @@ -203,7 +203,7 @@ acl_lookup_dict_rebuild_update(struct acl_lookup_dict *dict, /* new identifier, add it */ str_truncate(path, prefix_len); str_append(path, new_ids[newi]); - dt = dict_transaction_begin(dict->dict); + dt = dict_transaction_begin(dict->dict, NULL); dict_set(dt, str_c(path), "1"); newi++; } else if (!no_removes) { @@ -212,7 +212,7 @@ acl_lookup_dict_rebuild_update(struct acl_lookup_dict *dict, str_append(path, old_ids[oldi]); str_append_c(path, '/'); str_append(path, username); - dt = dict_transaction_begin(dict->dict); + dt = dict_transaction_begin(dict->dict, NULL); dict_unset(dt, str_c(path)); oldi++; } diff --git a/src/plugins/last-login/last-login-plugin.c b/src/plugins/last-login/last-login-plugin.c index e1e1ccd5ac..f3304f0c17 100644 --- a/src/plugins/last-login/last-login-plugin.c +++ b/src/plugins/last-login/last-login-plugin.c @@ -122,7 +122,7 @@ static void last_login_mail_user_created(struct mail_user *user) precision = mail_user_plugin_getenv(user, "last_login_precision"); - trans = dict_transaction_begin(dict); + trans = dict_transaction_begin(dict, NULL); if (precision == NULL || strcmp(precision, "s") == 0) dict_set(trans, key_name, dec2str(ioloop_time)); else if (strcmp(precision, "ms") == 0) { diff --git a/src/plugins/notify-status/notify-status-plugin.c b/src/plugins/notify-status/notify-status-plugin.c index 4fca59dc72..6846127edb 100644 --- a/src/plugins/notify-status/notify-status-plugin.c +++ b/src/plugins/notify-status/notify-status-plugin.c @@ -177,7 +177,7 @@ static void notify_update_mailbox_status(struct mailbox *box) i_error("notify-status: var_expand(%s) failed: %s", nuser->value_template, error); } else { - t = dict_transaction_begin(nuser->dict); + t = dict_transaction_begin(nuser->dict, NULL); dict_set(t, key, str_c(dest)); dict_transaction_commit_async(&t, notify_update_callback, NULL) ; } @@ -198,7 +198,7 @@ static void notify_remove_mailbox_status(struct mailbox *box) const char *key = t_strdup_printf(NOTIFY_STATUS_KEY, mailbox_get_vname(box)); - t = dict_transaction_begin(nuser->dict); + t = dict_transaction_begin(nuser->dict, NULL); dict_unset(t, key); dict_transaction_commit_async(&t, notify_update_callback, NULL) ; } diff --git a/src/plugins/quota-clone/quota-clone-plugin.c b/src/plugins/quota-clone/quota-clone-plugin.c index 8d46c13ecc..f084b84c07 100644 --- a/src/plugins/quota-clone/quota-clone-plugin.c +++ b/src/plugins/quota-clone/quota-clone-plugin.c @@ -116,7 +116,7 @@ static bool quota_clone_flush_real(struct mail_user *user) the special case of lookup changing from RESULT_LIMITED/RESULT_UNLIMITED to RESULT_UNKNOWN_RESOURCE, which leaves the old value unchanged. */ - trans = dict_transaction_begin(quser->dict); + trans = dict_transaction_begin(quser->dict, NULL); if (bytes_res == QUOTA_GET_RESULT_LIMITED || bytes_res == QUOTA_GET_RESULT_UNLIMITED) { dict_set(trans, DICT_QUOTA_CLONE_BYTES_PATH, diff --git a/src/plugins/quota/quota-dict.c b/src/plugins/quota/quota-dict.c index e4a9729ae8..a833f884c4 100644 --- a/src/plugins/quota/quota-dict.c +++ b/src/plugins/quota/quota-dict.c @@ -118,7 +118,7 @@ dict_quota_count(struct dict_quota_root *root, if (quota_count(&root->root, &bytes, &count, &error_res, error_r) < 0) return error_res; - dt = dict_transaction_begin(root->dict); + dt = dict_transaction_begin(root->dict, NULL); /* these unsets are mainly necessary for pgsql, because its trigger otherwise increases quota without deleting it. but some people with other databases want to store the @@ -220,7 +220,7 @@ dict_quota_update(struct quota_root *_root, <= QUOTA_GET_RESULT_INTERNAL_ERROR) return -1; } else { - dt = dict_transaction_begin(root->dict); + dt = dict_transaction_begin(root->dict, NULL); if (ctx->bytes_used != 0) { dict_atomic_inc(dt, DICT_QUOTA_CURRENT_BYTES_PATH, ctx->bytes_used); diff --git a/src/plugins/quota/quota.c b/src/plugins/quota/quota.c index c2234b94c9..25d6032fde 100644 --- a/src/plugins/quota/quota.c +++ b/src/plugins/quota/quota.c @@ -868,7 +868,7 @@ int quota_set_resource(struct quota_root *root, const char *name, } } - trans = dict_transaction_begin(root->limit_set_dict); + trans = dict_transaction_begin(root->limit_set_dict, NULL); key = t_strdup_printf(QUOTA_LIMIT_SET_PATH"%s", key); dict_set(trans, key, dec2str(value)); if (dict_transaction_commit(&trans, &error) < 0) {