aboutsummaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-09-08 13:41:48 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-09-08 13:41:48 +0100
commit58f7e9aa83e40fbfdc525760e935cde617aed28d (patch)
tree00b12096e6084e5c469bf174d574e384cc2ae5de /src/client
parentf4bcd9642cce794bf6beaaa19c0a6a6faaf2dbd5 (diff)
downloadrspamd-58f7e9aa83e40fbfdc525760e935cde617aed28d.tar.gz
rspamd-58f7e9aa83e40fbfdc525760e935cde617aed28d.zip
Add headers folding routine.
Diffstat (limited to 'src/client')
-rw-r--r--src/client/rspamc.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/client/rspamc.c b/src/client/rspamc.c
index 98ef61a48..a3d67a807 100644
--- a/src/client/rspamc.c
+++ b/src/client/rspamc.c
@@ -858,8 +858,10 @@ rspamc_mime_output (FILE *out, ucl_object_t *result, GString *input, GError *err
GByteArray ar;
GMimeParser *parser;
GMimeMessage *message;
- const ucl_object_t *metric, *res;
+ const ucl_object_t *cur, *metric, *res;
+ ucl_object_iter_t it = NULL;
const gchar *action = "no action";
+ GString *symbuf;
gint act;
gdouble score = 0.0, required_score = 0.0;
gchar scorebuf[32];
@@ -935,6 +937,26 @@ rspamc_mime_output (FILE *out, ucl_object_t *result, GString *input, GError *err
g_mime_object_append_header (GMIME_OBJECT (message), "X-Spam-Level",
scorebuf);
+ /* Short description of all symbols */
+ symbuf = g_string_sized_new (64);
+
+ while ((cur = ucl_iterate_object (metric, &it, true)) != NULL) {
+
+ if (ucl_object_type (cur) == UCL_OBJECT) {
+ rspamd_printf_gstring (symbuf, "%s,", ucl_object_key (cur));
+ }
+ }
+ /* Trim the last comma */
+ if (symbuf->str[symbuf->len - 1] == ',') {
+ g_string_erase (symbuf, symbuf->len - 1, 1);
+ }
+
+ sc = g_mime_utils_header_encode_text (symbuf->str);
+ g_mime_object_append_header (GMIME_OBJECT (message), "X-Spam-Symbols",
+ sc);
+ g_free (sc);
+ g_string_free (symbuf, TRUE);
+
if (json || raw) {
/* We also append json data as a specific header */
if (json) {