From: Vsevolod Stakhov Date: Wed, 27 Apr 2016 12:09:10 +0000 (+0100) Subject: [Feature] Pass settings id to log helper X-Git-Tag: 1.3.0~620 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=56482018b44df03b50b01e6872472d94e231e14e;p=thirdparty%2Frspamd.git [Feature] Pass settings id to log helper --- diff --git a/src/libserver/protocol.c b/src/libserver/protocol.c index 0426022a7c..ea5eb8bcc8 100644 --- a/src/libserver/protocol.c +++ b/src/libserver/protocol.c @@ -23,6 +23,7 @@ #include "http.h" #include "email_addr.h" #include "worker_private.h" +#include "xxhash.h" /* Max line size */ #define OUTBUFSIZ BUFSIZ @@ -1082,6 +1083,7 @@ rspamd_protocol_write_log_pipe (struct rspamd_worker_ctx *ctx, struct metric_result *mres; GHashTableIter it; gpointer k, v; + rspamd_ftok_t srch, *hdr; struct symbol *sym; gint id, i; gsize sz; @@ -1097,6 +1099,22 @@ rspamd_protocol_write_log_pipe (struct rspamd_worker_ctx *ctx, sizeof (struct rspamd_protocol_log_symbol_result) * g_hash_table_size (mres->symbols); ls = g_slice_alloc (sz); + + /* Handle settings id */ + srch.begin = "Settings-Id"; + srch.len = sizeof ("Settings-Id") - 1; + hdr = g_hash_table_lookup (task->request_headers, &srch); + + if (hdr) { + guint64 h; + + h = XXH64 (hdr->begin, hdr->len, 0xdeadbabe); + memcpy (&ls->settings_id, &h, sizeof (ls->settings_id)); + } + else { + ls->settings_id = 0; + } + ls->score = mres->score; ls->required_score = mres->actions_limits[METRIC_ACTION_REJECT]; ls->nresults = g_hash_table_size (mres->symbols); diff --git a/src/libserver/protocol.h b/src/libserver/protocol.h index 9ba1d67ca5..3c83835659 100644 --- a/src/libserver/protocol.h +++ b/src/libserver/protocol.h @@ -24,6 +24,7 @@ struct rspamd_protocol_log_symbol_result { }; struct rspamd_protocol_log_message_sum { guint32 nresults; + guint32 settings_id; gdouble score; gdouble required_score; struct rspamd_protocol_log_symbol_result results[];