]> source.dussan.org Git - rspamd.git/commitdiff
Rework create_metric_result function.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 23 Sep 2014 11:06:52 +0000 (12:06 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 23 Sep 2014 11:06:52 +0000 (12:06 +0100)
src/libmime/filter.c
src/libmime/filter.h

index bdddffb595f7690f2e3215489128f417bf0da163..d26f26e1d397c38cbfb1666ed89bc335d162e65e 100644 (file)
@@ -62,12 +62,18 @@ filter_error_quark (void)
        return g_quark_from_static_string ("g-filter-error-quark");
 }
 
-static struct metric_result *
+struct metric_result *
 create_metric_result (struct rspamd_task *task, const gchar *name)
 {
        struct metric_result *metric_res;
        struct metric *metric;
 
+       metric_res = g_hash_table_lookup (task->results, name);
+
+       if (metric_res != NULL) {
+               return metric_res;
+       }
+
        metric = g_hash_table_lookup (task->cfg->metrics, name);
        if (metric == NULL) {
                return NULL;
@@ -104,12 +110,7 @@ insert_metric_result (struct rspamd_task *task,
        gdouble *weight, w;
        const ucl_object_t *mobj, *sobj;
 
-       metric_res = g_hash_table_lookup (task->results, metric->name);
-
-       if (metric_res == NULL) {
-               /* Create new metric chain */
-               metric_res = create_metric_result (task, metric->name);
-       }
+       metric_res = create_metric_result (task, metric->name);
 
        weight = g_hash_table_lookup (metric->symbols, symbol);
        if (weight == NULL) {
index 24b871efe01556a31de563d25f2d942353e5c5d2..f1f128f6357ec3a781d6e73d72d50f01ad5b8b6c 100644 (file)
@@ -78,6 +78,15 @@ struct rspamd_composite {
        gint id;
 };
 
+/**
+ * Create or return existing result for the specified metric name
+ * @param task task object
+ * @param name name of metric
+ * @return metric result or NULL if metric `name` has not been found
+ */
+struct metric_result * create_metric_result (struct rspamd_task *task,
+               const gchar *name);
+
 /**
  * Process all filters
  * @param task worker's task that present message from user