From: Vsevolod Stakhov Date: Wed, 8 Oct 2014 23:54:39 +0000 (+0100) Subject: Add `one_shot` attr to metric symbols. X-Git-Tag: 0.7.2~27 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f1979c2e4d51a0114b0716203090171d6c92b82c;p=rspamd.git Add `one_shot` attr to metric symbols. --- diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h index c08fe0c80..9366b7718 100644 --- a/src/libserver/cfg_file.h +++ b/src/libserver/cfg_file.h @@ -119,6 +119,7 @@ struct rspamd_symbol_def { gchar *name; gchar *description; gdouble *weight_ptr; + gboolean one_shot; }; /** diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 955103883..750b70087 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -255,6 +255,7 @@ rspamd_rcl_insert_symbol (struct rspamd_config *cfg, struct metric *metric, struct rspamd_symbols_group *sym_group; struct rspamd_symbol_def *sym_def; GList *metric_list, *group_list; + gboolean one_shot = FALSE; /* * We allow two type of definitions: @@ -264,6 +265,7 @@ rspamd_rcl_insert_symbol (struct rspamd_config *cfg, struct metric *metric, * weight = ...; * description = ...; * group = ...; + * one_shot = true/false; * } */ if (is_legacy) { @@ -298,6 +300,10 @@ rspamd_rcl_insert_symbol (struct rspamd_config *cfg, struct metric *metric, if (val != NULL) { ucl_object_tostring_safe (val, &group); } + val = ucl_object_find_key (obj, "one_shot"); + if (val != NULL) { + one_shot = ucl_object_toboolean (val); + } } else { g_set_error (err, @@ -316,8 +322,9 @@ rspamd_rcl_insert_symbol (struct rspamd_config *cfg, struct metric *metric, sym_def->weight_ptr = score_ptr; sym_def->name = rspamd_mempool_strdup (cfg->cfg_pool, sym_name); sym_def->description = (gchar *)description; + sym_def->one_shot = one_shot; - g_hash_table_insert (metric->symbols, sym_def->name, score_ptr); + g_hash_table_insert (metric->symbols, sym_def->name, sym_def); if ((metric_list = g_hash_table_lookup (cfg->metrics_symbols, sym_def->name)) == NULL) {