From: Markus Valentin Date: Thu, 1 Dec 2022 10:03:26 +0000 (+0100) Subject: lib-dict: Add .set_hide_log_values() to dict vfuncs X-Git-Tag: 2.4.0~3311 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a443814a87cc2391715c90d00d90a088cc9eb432;p=thirdparty%2Fdovecot%2Fcore.git lib-dict: Add .set_hide_log_values() to dict vfuncs This is used to set hide_log_values in dict op settings. --- diff --git a/src/lib-dict/dict-private.h b/src/lib-dict/dict-private.h index 89bd4b7c0b..a3e8895598 100644 --- a/src/lib-dict/dict-private.h +++ b/src/lib-dict/dict-private.h @@ -54,6 +54,8 @@ struct dict_vfuncs { bool (*switch_ioloop)(struct dict *dict); void (*set_timestamp)(struct dict_transaction_context *ctx, const struct timespec *ts); + void (*set_hide_log_values)(struct dict_transaction_context *ctx, + bool hide_log_values); }; struct dict_commit_callback_ctx; @@ -63,6 +65,7 @@ struct dict_op_settings_private { char *home_dir; unsigned int expire_secs; bool no_slowness_warning; + bool hide_log_values; }; struct dict { diff --git a/src/lib-dict/dict.c b/src/lib-dict/dict.c index 9e8531bdaa..9432011b0d 100644 --- a/src/lib-dict/dict.c +++ b/src/lib-dict/dict.c @@ -560,6 +560,15 @@ dict_transaction_begin(struct dict *dict, const struct dict_op_settings *set) return ctx; } +void dict_transaction_set_hide_log_values(struct dict_transaction_context *ctx, + bool hide_log_values) +{ + /* Apply hide_log_values to the current transactions dict op settings */ + ctx->set.hide_log_values = hide_log_values; + if (ctx->dict->v.set_hide_log_values != NULL) + ctx->dict->v.set_hide_log_values(ctx, hide_log_values); +} + void dict_transaction_set_timestamp(struct dict_transaction_context *ctx, const struct timespec *ts) { @@ -813,6 +822,7 @@ void dict_op_settings_dup(const struct dict_op_settings *source, dest_r->home_dir = i_strdup(source->home_dir); dest_r->expire_secs = source->expire_secs; dest_r->no_slowness_warning = source->no_slowness_warning; + dest_r->hide_log_values = source->hide_log_values; } void dict_op_settings_private_free(struct dict_op_settings_private *set) diff --git a/src/lib-dict/dict.h b/src/lib-dict/dict.h index 4d56b8748f..4e7f218d97 100644 --- a/src/lib-dict/dict.h +++ b/src/lib-dict/dict.h @@ -51,6 +51,8 @@ struct dict_op_settings { commit will finish up anytime soon. Mainly useful for transactions which aren't especially important whether they finish or not. */ bool no_slowness_warning; + /* Hide values when logging about this transaction. */ + bool hide_log_values; }; struct dict_lookup_result { @@ -176,6 +178,11 @@ dict_transaction_begin(struct dict *dict, const struct dict_op_settings *set); dict-sql with Cassandra backend does anything with this. */ void dict_transaction_set_timestamp(struct dict_transaction_context *ctx, const struct timespec *ts); + +/* Set hide_log_values for the transaction. Currently only + dict-sql with Cassandra backend does anything with this. */ +void dict_transaction_set_hide_log_values(struct dict_transaction_context *ctx, + bool hide_log_values); /* Commit the transaction. Returns 1 if ok, 0 if dict_atomic_inc() was used on a nonexistent key, -1 if failed. */ int dict_transaction_commit(struct dict_transaction_context **ctx,