Browse Source

Add `one_shot` attr to metric symbols.

tags/0.7.2
Vsevolod Stakhov 9 years ago
parent
commit
f1979c2e4d
2 changed files with 9 additions and 1 deletions
  1. 1
    0
      src/libserver/cfg_file.h
  2. 8
    1
      src/libserver/cfg_rcl.c

+ 1
- 0
src/libserver/cfg_file.h View File

@@ -119,6 +119,7 @@ struct rspamd_symbol_def {
gchar *name;
gchar *description;
gdouble *weight_ptr;
gboolean one_shot;
};

/**

+ 8
- 1
src/libserver/cfg_rcl.c View File

@@ -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) {

Loading…
Cancel
Save