Browse Source

[Minor] Save dkim check result in mempool variable

tags/1.8.3
Vsevolod Stakhov 5 years ago
parent
commit
b48cbdffc0
1 changed files with 26 additions and 3 deletions
  1. 26
    3
      src/plugins/dkim_check.c

+ 26
- 3
src/plugins/dkim_check.c View File

@@ -948,6 +948,7 @@ dkim_module_check (struct dkim_check_result *res)
const gchar *strict_value;
struct dkim_check_result *first, *cur = NULL;
struct dkim_ctx *dkim_module_ctx = dkim_get_context (res->task->cfg);
struct rspamd_task *task = res->task;

first = res->first;

@@ -957,7 +958,7 @@ dkim_module_check (struct dkim_check_result *res)
}

if (cur->key != NULL && cur->res == NULL) {
cur->res = rspamd_dkim_check (cur->ctx, cur->key, cur->task);
cur->res = rspamd_dkim_check (cur->ctx, cur->key, task);

if (dkim_module_ctx->dkim_domains != NULL) {
/* Perform strict check */
@@ -985,6 +986,21 @@ dkim_module_check (struct dkim_check_result *res)
}

if (all_done) {
/* Create zero terminated array of results */
struct rspamd_dkim_check_result **pres;
guint nres = 0, i = 0;

DL_FOREACH (first, cur) {
if (cur->ctx == NULL || cur->res == NULL) {
continue;
}

nres ++;
}

pres = rspamd_mempool_alloc (task->task_pool, sizeof (*pres) * (nres + 1));
pres[nres] = NULL;

DL_FOREACH (first, cur) {
const gchar *symbol = NULL, *trace = NULL;
gdouble symbol_weight = 1.0;
@@ -993,6 +1009,8 @@ dkim_module_check (struct dkim_check_result *res)
continue;
}

pres[i++] = cur->res;

if (cur->res->rcode == DKIM_REJECT) {
symbol = dkim_module_ctx->symbol_reject;
trace = "-";
@@ -1019,7 +1037,7 @@ dkim_module_check (struct dkim_check_result *res)
gchar *tracebuf;

tracelen = strlen (domain) + strlen (selector) + 4;
tracebuf = rspamd_mempool_alloc (cur->task->task_pool,
tracebuf = rspamd_mempool_alloc (task->task_pool,
tracelen);
rspamd_snprintf (tracebuf, tracelen, "%s:%s", domain, trace);

@@ -1029,12 +1047,17 @@ dkim_module_check (struct dkim_check_result *res)
tracebuf);

rspamd_snprintf (tracebuf, tracelen, "%s:s=%s", domain, selector);
rspamd_task_insert_result (cur->task,
rspamd_task_insert_result (task,
symbol,
symbol_weight,
tracebuf);
}

}

rspamd_mempool_set_variable (task->task_pool,
RSPAMD_MEMPOOL_DKIM_CHECK_RESULTS,
pres, NULL);
}
}


Loading…
Cancel
Save