Selaa lähdekoodia

Fix metrics loading.

tags/1.0.0
Vsevolod Stakhov 8 vuotta sitten
vanhempi
commit
fb999abf18
4 muutettua tiedostoa jossa 26 lisäystä ja 23 poistoa
  1. 1
    1
      src/libserver/cfg_file.h
  2. 12
    13
      src/libserver/cfg_rcl.c
  3. 12
    7
      src/libserver/cfg_utils.c
  4. 1
    2
      src/lua/lua_cfg_file.c

+ 1
- 1
src/libserver/cfg_file.h Näytä tiedosto

@@ -353,7 +353,7 @@ struct rspamd_worker_conf * rspamd_config_new_worker (struct rspamd_config *cfg,
* Return a new metric structure, setting default and non-conflicting attributes
*/
struct metric * rspamd_config_new_metric (struct rspamd_config *cfg,
struct metric *c);
struct metric *c, const gchar *name);
/*
* Return a new statfile structure, setting default and non-conflicting attributes
*/

+ 12
- 13
src/libserver/cfg_rcl.c Näytä tiedosto

@@ -320,8 +320,17 @@ rspamd_rcl_insert_symbol (struct rspamd_config *cfg, struct metric *metric,
return FALSE;
}

return rspamd_config_add_metric_symbol (cfg, metric->name, sym_name,
symbol_score, description, group, one_shot, TRUE);
if (!rspamd_config_add_metric_symbol (cfg, metric->name, sym_name,
symbol_score, description, group, one_shot, TRUE)) {
g_set_error (err,
CFG_RCL_ERROR,
EINVAL,
"cannot add symbol: %s to metric %s",
sym_name, metric->name);
return FALSE;
}

return TRUE;
}

static gboolean
@@ -402,8 +411,7 @@ rspamd_rcl_metric_handler (rspamd_mempool_t *pool, const ucl_object_t *obj,

metric = g_hash_table_lookup (cfg->metrics, metric_name);
if (metric == NULL) {
metric = rspamd_config_new_metric (cfg, metric);
metric->name = metric_name;
metric = rspamd_config_new_metric (cfg, metric, metric_name);
}
else {
new = FALSE;
@@ -524,15 +532,6 @@ rspamd_rcl_metric_handler (rspamd_mempool_t *pool, const ucl_object_t *obj,
return FALSE;
}

/* Insert the resulting metric */
if (new) {
g_hash_table_insert (cfg->metrics, (void *)metric->name, metric);
cfg->metrics_list = g_list_prepend (cfg->metrics_list, metric);
if (strcmp (metric->name, DEFAULT_METRIC) == 0) {
cfg->default_metric = metric;
}
}

return TRUE;
}


+ 12
- 7
src/libserver/cfg_utils.c Näytä tiedosto

@@ -378,15 +378,10 @@ rspamd_config_post_load (struct rspamd_config *cfg)

if ((def_metric =
g_hash_table_lookup (cfg->metrics, DEFAULT_METRIC)) == NULL) {
def_metric = rspamd_config_new_metric (cfg, NULL);
def_metric->name = DEFAULT_METRIC;
def_metric = rspamd_config_new_metric (cfg, NULL, DEFAULT_METRIC);
def_metric->actions[METRIC_ACTION_REJECT].score = DEFAULT_SCORE;
cfg->metrics_list = g_list_prepend (cfg->metrics_list, def_metric);
g_hash_table_insert (cfg->metrics, DEFAULT_METRIC, def_metric);
}

cfg->default_metric = def_metric;

if (cfg->tld_file == NULL) {
/* Try to guess tld file */
GString *fpath = g_string_new (NULL);
@@ -546,9 +541,11 @@ rspamd_config_new_statfile (struct rspamd_config *cfg,
}

struct metric *
rspamd_config_new_metric (struct rspamd_config *cfg, struct metric *c)
rspamd_config_new_metric (struct rspamd_config *cfg, struct metric *c,
const gchar *name)
{
int i;

if (c == NULL) {
c = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (struct metric));
c->grow_factor = 1.0;
@@ -558,12 +555,20 @@ rspamd_config_new_metric (struct rspamd_config *cfg, struct metric *c)
c->actions[i].score = -1.0;
}
c->subject = SPAM_SUBJECT;
c->name = rspamd_mempool_strdup (cfg->cfg_pool, name);
rspamd_mempool_add_destructor (cfg->cfg_pool,
(rspamd_mempool_destruct_t) g_hash_table_destroy,
c->symbols);
rspamd_mempool_add_destructor (cfg->cfg_pool,
(rspamd_mempool_destruct_t) g_hash_table_destroy,
c->descriptions);

g_hash_table_insert (cfg->metrics, (void *)c->name, c);
cfg->metrics_list = g_list_prepend (cfg->metrics_list, c);

if (strcmp (c->name, DEFAULT_METRIC) == 0) {
cfg->default_metric = c;
}
}

return c;

+ 1
- 2
src/lua/lua_cfg_file.c Näytä tiedosto

@@ -48,8 +48,7 @@ lua_process_metric (lua_State *L, const gchar *name, struct rspamd_config *cfg)

/* Get module opt structure */
if ((metric = g_hash_table_lookup (cfg->metrics, name)) == NULL) {
metric = rspamd_config_new_metric (cfg, metric);
metric->name = rspamd_mempool_strdup (cfg->cfg_pool, name);
metric = rspamd_config_new_metric (cfg, metric, name);
}

/* Now iterate throught module table */

Loading…
Peruuta
Tallenna