diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-09-08 13:41:48 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-09-08 13:41:48 +0100 |
commit | 58f7e9aa83e40fbfdc525760e935cde617aed28d (patch) | |
tree | 00b12096e6084e5c469bf174d574e384cc2ae5de /src/client | |
parent | f4bcd9642cce794bf6beaaa19c0a6a6faaf2dbd5 (diff) | |
download | rspamd-58f7e9aa83e40fbfdc525760e935cde617aed28d.tar.gz rspamd-58f7e9aa83e40fbfdc525760e935cde617aed28d.zip |
Add headers folding routine.
Diffstat (limited to 'src/client')
-rw-r--r-- | src/client/rspamc.c | 24 |
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) { |