return 0;
}
+static int
+cmd_hide_log_values(struct dict_connection_cmd *cmd, const char *const *args)
+{
+ struct dict_connection_transaction *trans;
+ bool value;
+
+ /* <id> <hide_log_values> */
+ if (str_array_length(args) != 2 ) {
+ e_error(cmd->event, "HIDE_LOG_VALUES: broken input");
+ return -1;
+ }
+ if (strcasecmp(args[1], "yes") == 0 || strcasecmp(args[1], "y") == 0 ||
+ strcmp(args[1], "1") == 0)
+ value = TRUE;
+ else if (strcasecmp(args[1], "no") == 0)
+ value = FALSE;
+ else {
+ e_error(cmd->event, "HIDE_LOG_VALUES: broken input");
+ return -1;
+ }
+
+ if (dict_connection_transaction_lookup_parse(cmd->conn, args[0], &trans) < 0)
+ return -1;
+
+ dict_transaction_set_hide_log_values(trans->ctx, value);
+ return 0;
+}
+
static const struct dict_cmd_func cmds[] = {
{ DICT_PROTOCOL_CMD_LOOKUP, cmd_lookup },
{ DICT_PROTOCOL_CMD_ITERATE, cmd_iterate },
{ DICT_PROTOCOL_CMD_UNSET, cmd_unset },
{ DICT_PROTOCOL_CMD_ATOMIC_INC, cmd_atomic_inc },
{ DICT_PROTOCOL_CMD_TIMESTAMP, cmd_timestamp },
+ { DICT_PROTOCOL_CMD_HIDE_LOG_VALUES, cmd_hide_log_values },
{ 0, NULL }
};
client_dict_send_transaction_query(ctx, query);
}
+static void client_dict_set_hide_log_values(struct dict_transaction_context *_ctx,
+ bool hide_log_values)
+{
+ struct client_dict_transaction_context *ctx =
+ container_of(_ctx, struct client_dict_transaction_context, ctx);
+ const char *query;
+
+ query = t_strdup_printf("%c%u\t%s",
+ DICT_PROTOCOL_CMD_HIDE_LOG_VALUES,
+ ctx->id,
+ hide_log_values ? "yes" : "no");
+
+ client_dict_send_transaction_query(ctx, query);
+}
+
struct dict dict_driver_client = {
.name = "proxy",
.lookup_async = client_dict_lookup_async,
.switch_ioloop = client_dict_switch_ioloop,
.set_timestamp = client_dict_set_timestamp,
+ .set_hide_log_values = client_dict_set_hide_log_values,
}
};
DICT_PROTOCOL_CMD_UNSET = 'U', /* <id> <key> */
DICT_PROTOCOL_CMD_ATOMIC_INC = 'A', /* <id> <key> <diff> */
DICT_PROTOCOL_CMD_TIMESTAMP = 'T', /* <id> <secs> <nsecs> */
+ DICT_PROTOCOL_CMD_HIDE_LOG_VALUES = 'V', /* <id> <hide_log_values> */
};
enum dict_protocol_reply {